diff options
| author | Dimitry Andric <dim@FreeBSD.org> | 2021-08-22 19:00:43 +0000 |
|---|---|---|
| committer | Dimitry Andric <dim@FreeBSD.org> | 2021-11-13 20:39:49 +0000 |
| commit | fe6060f10f634930ff71b7c50291ddc610da2475 (patch) | |
| tree | 1483580c790bd4d27b6500a7542b5ee00534d3cc /contrib/llvm-project/llvm/lib/Transforms/Utils/FunctionImportUtils.cpp | |
| parent | b61bce17f346d79cecfd8f195a64b10f77be43b1 (diff) | |
| parent | 344a3780b2e33f6ca763666c380202b18aab72a3 (diff) | |
Diffstat (limited to 'contrib/llvm-project/llvm/lib/Transforms/Utils/FunctionImportUtils.cpp')
| -rw-r--r-- | contrib/llvm-project/llvm/lib/Transforms/Utils/FunctionImportUtils.cpp | 6 |
1 files changed, 4 insertions, 2 deletions
diff --git a/contrib/llvm-project/llvm/lib/Transforms/Utils/FunctionImportUtils.cpp b/contrib/llvm-project/llvm/lib/Transforms/Utils/FunctionImportUtils.cpp index 8df7ae9563d8..2946c0018c31 100644 --- a/contrib/llvm-project/llvm/lib/Transforms/Utils/FunctionImportUtils.cpp +++ b/contrib/llvm-project/llvm/lib/Transforms/Utils/FunctionImportUtils.cpp @@ -276,10 +276,12 @@ void FunctionImportGlobalProcessing::processGlobalForThinLTO(GlobalValue &GV) { // When ClearDSOLocalOnDeclarations is true, clear dso_local if GV is // converted to a declaration, to disable direct access. Don't do this if GV // is implicitly dso_local due to a non-default visibility. - if (ClearDSOLocalOnDeclarations && GV.isDeclarationForLinker() && + if (ClearDSOLocalOnDeclarations && + (GV.isDeclarationForLinker() || + (isPerformingImport() && !doImportAsDefinition(&GV))) && !GV.isImplicitDSOLocal()) { GV.setDSOLocal(false); - } else if (VI && VI.isDSOLocal()) { + } else if (VI && VI.isDSOLocal(ImportIndex.withDSOLocalPropagation())) { // If all summaries are dso_local, symbol gets resolved to a known local // definition. GV.setDSOLocal(true); |
