diff options
author | Rafael Espindola <rafael.espindola@gmail.com> | 2016-06-16 15:40:24 +0000 |
---|---|---|
committer | Rafael Espindola <rafael.espindola@gmail.com> | 2016-06-16 15:40:24 +0000 |
commit | c1d739f25331d6a9bf993ed73d3f4cbfc2c10007 (patch) | |
tree | fd713b17c3cf9132ae65af724dc994919f8c61c3 /llvm/lib/Target | |
parent | c24f0eeb8df9abac9e0402cec8b345694ff94ec8 (diff) | |
download | bcm5719-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.cpp | 11 |
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(); |