diff options
Diffstat (limited to 'clang/lib/CodeGen/CodeGenModule.cpp')
| -rw-r--r-- | clang/lib/CodeGen/CodeGenModule.cpp | 4 |
1 files changed, 2 insertions, 2 deletions
diff --git a/clang/lib/CodeGen/CodeGenModule.cpp b/clang/lib/CodeGen/CodeGenModule.cpp index 6a43b6bba627..4a61e0e86dff 100644 --- a/clang/lib/CodeGen/CodeGenModule.cpp +++ b/clang/lib/CodeGen/CodeGenModule.cpp @@ -846,7 +846,7 @@ static bool shouldAssumeDSOLocal(const CodeGenModule &CGM, const auto &CGOpts = CGM.getCodeGenOpts(); llvm::Reloc::Model RM = CGOpts.RelocationModel; const auto &LOpts = CGM.getLangOpts(); - if (RM != llvm::Reloc::Static && !LOpts.PIE) + if (RM != llvm::Reloc::Static && LOpts.SemanticInterposition) return false; // A definition cannot be preempted from an executable. @@ -868,7 +868,7 @@ static bool shouldAssumeDSOLocal(const CodeGenModule &CGM, // If we can use copy relocations we can assume it is local. if (auto *Var = dyn_cast<llvm::GlobalVariable>(GV)) if (!Var->isThreadLocal() && - (RM == llvm::Reloc::Static || CGOpts.PIECopyRelocations)) + (RM == llvm::Reloc::Static || (LOpts.PIE && CGOpts.PIECopyRelocations))) return true; // If we can use a plt entry as the symbol address we can assume it |
