summaryrefslogtreecommitdiffstats
path: root/llvm/lib/Target/Hexagon/HexagonSelectionDAGInfo.cpp
diff options
context:
space:
mode:
authorKrzysztof Parzyszek <kparzysz@codeaurora.org>2016-07-25 14:42:11 +0000
committerKrzysztof Parzyszek <kparzysz@codeaurora.org>2016-07-25 14:42:11 +0000
commit080bebd212869135dbae80bb721f38f4eefeee12 (patch)
tree9e88abc432d7db3a9fdf80ad82129ea80b55161b /llvm/lib/Target/Hexagon/HexagonSelectionDAGInfo.cpp
parent8031238017a5aa0294168ecec4ef90fc1b3b76b4 (diff)
downloadbcm5719-llvm-080bebd212869135dbae80bb721f38f4eefeee12.tar.gz
bcm5719-llvm-080bebd212869135dbae80bb721f38f4eefeee12.zip
[Hexagon] Add target feature to generate long calls
llvm-svn: 276638
Diffstat (limited to 'llvm/lib/Target/Hexagon/HexagonSelectionDAGInfo.cpp')
-rw-r--r--llvm/lib/Target/Hexagon/HexagonSelectionDAGInfo.cpp7
1 files changed, 5 insertions, 2 deletions
diff --git a/llvm/lib/Target/Hexagon/HexagonSelectionDAGInfo.cpp b/llvm/lib/Target/Hexagon/HexagonSelectionDAGInfo.cpp
index 00dfed75499..10730536080 100644
--- a/llvm/lib/Target/Hexagon/HexagonSelectionDAGInfo.cpp
+++ b/llvm/lib/Target/Hexagon/HexagonSelectionDAGInfo.cpp
@@ -44,14 +44,17 @@ SDValue HexagonSelectionDAGInfo::EmitTargetCodeForMemcpy(
const char *SpecialMemcpyName =
"__hexagon_memcpy_likely_aligned_min32bytes_mult8bytes";
+ const MachineFunction &MF = DAG.getMachineFunction();
+ bool LongCalls = MF.getSubtarget<HexagonSubtarget>().useLongCalls();
+ unsigned Flags = LongCalls ? HexagonII::HMOTF_ConstExtended : 0;
TargetLowering::CallLoweringInfo CLI(DAG);
CLI.setDebugLoc(dl)
.setChain(Chain)
.setCallee(TLI.getLibcallCallingConv(RTLIB::MEMCPY),
Type::getVoidTy(*DAG.getContext()),
- DAG.getTargetExternalSymbol(
- SpecialMemcpyName, TLI.getPointerTy(DAG.getDataLayout())),
+ DAG.getTargetExternalSymbol(SpecialMemcpyName,
+ TLI.getPointerTy(DAG.getDataLayout()), Flags),
std::move(Args))
.setDiscardResult();
OpenPOWER on IntegriCloud