summaryrefslogtreecommitdiffstats
path: root/llvm/lib/Target
diff options
context:
space:
mode:
authorRafael Espindola <rafael.espindola@gmail.com>2016-06-16 15:40:24 +0000
committerRafael Espindola <rafael.espindola@gmail.com>2016-06-16 15:40:24 +0000
commitc1d739f25331d6a9bf993ed73d3f4cbfc2c10007 (patch)
treefd713b17c3cf9132ae65af724dc994919f8c61c3 /llvm/lib/Target
parentc24f0eeb8df9abac9e0402cec8b345694ff94ec8 (diff)
downloadbcm5719-llvm-c1d739f25331d6a9bf993ed73d3f4cbfc2c10007.tar.gz
bcm5719-llvm-c1d739f25331d6a9bf993ed73d3f4cbfc2c10007.zip
Refactor duplicated code. NFC.
llvm-svn: 272904
Diffstat (limited to 'llvm/lib/Target')
-rw-r--r--llvm/lib/Target/ARM/ARMISelLowering.cpp11
1 files changed, 5 insertions, 6 deletions
diff --git a/llvm/lib/Target/ARM/ARMISelLowering.cpp b/llvm/lib/Target/ARM/ARMISelLowering.cpp
index 4ef14ade068..ce7a7693d9b 100644
--- a/llvm/lib/Target/ARM/ARMISelLowering.cpp
+++ b/llvm/lib/Target/ARM/ARMISelLowering.cpp
@@ -1798,9 +1798,14 @@ ARMTargetLowering::LowerCall(TargetLowering::CallLoweringInfo &CLI,
const TargetMachine &TM = getTargetMachine();
Reloc::Model RM = TM.getRelocationModel();
+ const Triple &TargetTriple = TM.getTargetTriple();
+ const Module *Mod = MF.getFunction()->getParent();
const GlobalValue *GV = nullptr;
if (GlobalAddressSDNode *G = dyn_cast<GlobalAddressSDNode>(Callee))
GV = G->getGlobal();
+ bool isStub =
+ !shouldAssumeDSOLocal(RM, TargetTriple, *Mod, GV) &&
+ Subtarget->isTargetMachO();
bool isARMFunc = false;
bool isLocalARMFunc = false;
@@ -1846,10 +1851,6 @@ ARMTargetLowering::LowerCall(TargetLowering::CallLoweringInfo &CLI,
} else if (isa<GlobalAddressSDNode>(Callee)) {
isDirect = true;
bool isDef = GV->isStrongDefinitionForLinker();
- const Triple &TargetTriple = TM.getTargetTriple();
- bool isStub =
- !shouldAssumeDSOLocal(RM, TargetTriple, *GV->getParent(), GV) &&
- Subtarget->isTargetMachO();
isARMFunc = !Subtarget->isThumb() || (isStub && !Subtarget->isMClass());
// ARM call to a local ARM function is predicable.
@@ -1887,8 +1888,6 @@ ARMTargetLowering::LowerCall(TargetLowering::CallLoweringInfo &CLI,
}
} else if (ExternalSymbolSDNode *S = dyn_cast<ExternalSymbolSDNode>(Callee)) {
isDirect = true;
- bool isStub = Subtarget->isTargetMachO() &&
- getTargetMachine().getRelocationModel() != Reloc::Static;
isARMFunc = !Subtarget->isThumb() || (isStub && !Subtarget->isMClass());
// tBX takes a register source operand.
const char *Sym = S->getSymbol();
OpenPOWER on IntegriCloud