diff options
author | Rafael Espindola <rafael.espindola@gmail.com> | 2018-03-13 15:24:51 +0000 |
---|---|---|
committer | Rafael Espindola <rafael.espindola@gmail.com> | 2018-03-13 15:24:51 +0000 |
commit | f5220fb68f2baef2e6d2e0bf11c12caa9e22ef29 (patch) | |
tree | 9ee057ff5c8c81851f1d9d36818a9672242b72b1 /llvm/lib/Transforms/Utils | |
parent | 3d4c86d399b9d6fd22dc2ee8dbe08a5eb96218d1 (diff) | |
download | bcm5719-llvm-f5220fb68f2baef2e6d2e0bf11c12caa9e22ef29.tar.gz bcm5719-llvm-f5220fb68f2baef2e6d2e0bf11c12caa9e22ef29.zip |
[ThinLTO] Clear dllimport when setting dso_local.
This is PR36686.
If a user of a library is LTOed with that library we take the
opportunity to set dso_local, but we don't clear dllimport, which
creates an invalid IR.
llvm-svn: 327408
Diffstat (limited to 'llvm/lib/Transforms/Utils')
-rw-r--r-- | llvm/lib/Transforms/Utils/FunctionImportUtils.cpp | 5 |
1 files changed, 4 insertions, 1 deletions
diff --git a/llvm/lib/Transforms/Utils/FunctionImportUtils.cpp b/llvm/lib/Transforms/Utils/FunctionImportUtils.cpp index bf6cce96f49..479816a339d 100644 --- a/llvm/lib/Transforms/Utils/FunctionImportUtils.cpp +++ b/llvm/lib/Transforms/Utils/FunctionImportUtils.cpp @@ -206,8 +206,11 @@ void FunctionImportGlobalProcessing::processGlobalForThinLTO(GlobalValue &GV) { // definition. if (GV.hasName()) { ValueInfo VI = ImportIndex.getValueInfo(GV.getGUID()); - if (VI && VI.isDSOLocal()) + if (VI && VI.isDSOLocal()) { GV.setDSOLocal(true); + if (GV.hasDLLImportStorageClass()) + GV.setDLLStorageClass(GlobalValue::DefaultStorageClass); + } } bool DoPromote = false; |