diff options
author | Rafael Espindola <rafael.espindola@gmail.com> | 2016-06-22 22:09:17 +0000 |
---|---|---|
committer | Rafael Espindola <rafael.espindola@gmail.com> | 2016-06-22 22:09:17 +0000 |
commit | 928a95d0b0ad71de454014c9eca348e82929eb13 (patch) | |
tree | b095d22ca1081df1cd22b22c4270405af4bb55d4 /llvm/lib/Target/PowerPC/PPCISelLowering.cpp | |
parent | 45bb5c69a0fe1294de6349cba49cb9a3e7641977 (diff) | |
download | bcm5719-llvm-928a95d0b0ad71de454014c9eca348e82929eb13.tar.gz bcm5719-llvm-928a95d0b0ad71de454014c9eca348e82929eb13.zip |
Use shouldAssumeDSOLocal.
With this it handle -fPIE.
llvm-svn: 273499
Diffstat (limited to 'llvm/lib/Target/PowerPC/PPCISelLowering.cpp')
-rw-r--r-- | llvm/lib/Target/PowerPC/PPCISelLowering.cpp | 10 |
1 files changed, 5 insertions, 5 deletions
diff --git a/llvm/lib/Target/PowerPC/PPCISelLowering.cpp b/llvm/lib/Target/PowerPC/PPCISelLowering.cpp index 68d1a679e83..1df07071f8e 100644 --- a/llvm/lib/Target/PowerPC/PPCISelLowering.cpp +++ b/llvm/lib/Target/PowerPC/PPCISelLowering.cpp @@ -23,6 +23,7 @@ #include "llvm/ADT/Statistic.h" #include "llvm/ADT/StringSwitch.h" #include "llvm/ADT/Triple.h" +#include "llvm/CodeGen/Analysis.h" #include "llvm/CodeGen/CallingConvLower.h" #include "llvm/CodeGen/MachineFrameInfo.h" #include "llvm/CodeGen/MachineFunction.h" @@ -4287,11 +4288,10 @@ PrepareCall(SelectionDAG &DAG, SDValue &Callee, SDValue &InFlag, SDValue &Chain, Reloc::Model RM = DAG.getTarget().getRelocationModel(); const Triple &TargetTriple = Subtarget.getTargetTriple(); const GlobalValue *GV = G->getGlobal(); - if ((RM != Reloc::Static && - (TargetTriple.isMacOSX() && TargetTriple.isMacOSXVersionLT(10, 5)) && - !GV->isStrongDefinitionForLinker()) || - (Subtarget.isTargetELF() && !isPPC64 && !GV->hasLocalLinkage() && - RM == Reloc::PIC_)) { + bool OldMachOLinker = + TargetTriple.isMacOSX() && TargetTriple.isMacOSXVersionLT(10, 5); + if (!shouldAssumeDSOLocal(RM, TargetTriple, *GV->getParent(), GV) && + (OldMachOLinker || (Subtarget.isTargetELF() && !isPPC64))) { // PC-relative references to external symbols should go through $stub, // unless we're building with the leopard linker or later, which // automatically synthesizes these stubs. |