summaryrefslogtreecommitdiffstats
path: root/llvm/lib/Target/PowerPC/PPCISelLowering.cpp
diff options
context:
space:
mode:
authorRafael Espindola <rafael.espindola@gmail.com>2016-06-22 22:09:17 +0000
committerRafael Espindola <rafael.espindola@gmail.com>2016-06-22 22:09:17 +0000
commit928a95d0b0ad71de454014c9eca348e82929eb13 (patch)
treeb095d22ca1081df1cd22b22c4270405af4bb55d4 /llvm/lib/Target/PowerPC/PPCISelLowering.cpp
parent45bb5c69a0fe1294de6349cba49cb9a3e7641977 (diff)
downloadbcm5719-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.cpp10
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.
OpenPOWER on IntegriCloud