diff options
| author | Rafael Espindola <rafael.espindola@gmail.com> | 2016-05-31 15:31:55 +0000 |
|---|---|---|
| committer | Rafael Espindola <rafael.espindola@gmail.com> | 2016-05-31 15:31:55 +0000 |
| commit | 7ad97b2fe42e32344ff81ea09368f029e3300f97 (patch) | |
| tree | 4e218b0f0a4bc109d7168277c04d7fcbd239f9c1 /llvm/lib/Target | |
| parent | e93a73fb7aa49d04f1109e6c3c69530ea6d81d31 (diff) | |
| download | bcm5719-llvm-7ad97b2fe42e32344ff81ea09368f029e3300f97.tar.gz bcm5719-llvm-7ad97b2fe42e32344ff81ea09368f029e3300f97.zip | |
Add a use of shouldAssumeDSOLocal to ARM.
Now this code path knows about position independent executables.
llvm-svn: 271290
Diffstat (limited to 'llvm/lib/Target')
| -rw-r--r-- | llvm/lib/Target/ARM/ARMISelLowering.cpp | 8 |
1 files changed, 6 insertions, 2 deletions
diff --git a/llvm/lib/Target/ARM/ARMISelLowering.cpp b/llvm/lib/Target/ARM/ARMISelLowering.cpp index b28119e9b58..ef7304dafd3 100644 --- a/llvm/lib/Target/ARM/ARMISelLowering.cpp +++ b/llvm/lib/Target/ARM/ARMISelLowering.cpp @@ -24,6 +24,7 @@ #include "llvm/ADT/Statistic.h" #include "llvm/ADT/StringExtras.h" #include "llvm/ADT/StringSwitch.h" +#include "llvm/CodeGen/Analysis.h" #include "llvm/CodeGen/CallingConvLower.h" #include "llvm/CodeGen/IntrinsicLowering.h" #include "llvm/CodeGen/MachineBasicBlock.h" @@ -2792,9 +2793,12 @@ SDValue ARMTargetLowering::LowerGlobalAddressELF(SDValue Op, EVT PtrVT = getPointerTy(DAG.getDataLayout()); SDLoc dl(Op); const GlobalValue *GV = cast<GlobalAddressSDNode>(Op)->getGlobal(); - if (getTargetMachine().getRelocationModel() == Reloc::PIC_) { + const TargetMachine &TM = getTargetMachine(); + Reloc::Model RM = TM.getRelocationModel(); + const Triple &TargetTriple = TM.getTargetTriple(); + if (RM == Reloc::PIC_) { bool UseGOT_PREL = - !(GV->hasHiddenVisibility() || GV->hasLocalLinkage()); + !shouldAssumeDSOLocal(RM, TargetTriple, *GV->getParent(), GV); MachineFunction &MF = DAG.getMachineFunction(); ARMFunctionInfo *AFI = MF.getInfo<ARMFunctionInfo>(); |

