diff options
author | Colin LeMahieu <colinl@codeaurora.org> | 2015-01-16 17:05:27 +0000 |
---|---|---|
committer | Colin LeMahieu <colinl@codeaurora.org> | 2015-01-16 17:05:27 +0000 |
commit | 2e3a26de0ce02ee85fa3b7a26d2d1a7afc5a3a36 (patch) | |
tree | f18b8f16552b9c0f2bffad43ccbf7eba7bd9b933 /llvm/lib/Target/Hexagon/HexagonISelLowering.cpp | |
parent | d50d2e7af0a71cf82ebfdc78fb3991afef883715 (diff) | |
download | bcm5719-llvm-2e3a26de0ce02ee85fa3b7a26d2d1a7afc5a3a36.tar.gz bcm5719-llvm-2e3a26de0ce02ee85fa3b7a26d2d1a7afc5a3a36.zip |
[Hexagon] Updating call/jump instruction patterns.
llvm-svn: 226288
Diffstat (limited to 'llvm/lib/Target/Hexagon/HexagonISelLowering.cpp')
-rw-r--r-- | llvm/lib/Target/Hexagon/HexagonISelLowering.cpp | 8 |
1 files changed, 6 insertions, 2 deletions
diff --git a/llvm/lib/Target/Hexagon/HexagonISelLowering.cpp b/llvm/lib/Target/Hexagon/HexagonISelLowering.cpp index ecf4c79211c..61e0f72d8a7 100644 --- a/llvm/lib/Target/Hexagon/HexagonISelLowering.cpp +++ b/llvm/lib/Target/Hexagon/HexagonISelLowering.cpp @@ -404,6 +404,7 @@ HexagonTargetLowering::LowerCall(TargetLowering::CallLoweringInfo &CLI, bool &isTailCall = CLI.IsTailCall; CallingConv::ID CallConv = CLI.CallConv; bool isVarArg = CLI.IsVarArg; + bool doesNotReturn = CLI.DoesNotReturn; bool IsStructRet = (Outs.empty()) ? false : Outs[0].Flags.isSRet(); @@ -597,7 +598,8 @@ HexagonTargetLowering::LowerCall(TargetLowering::CallLoweringInfo &CLI, if (isTailCall) return DAG.getNode(HexagonISD::TC_RETURN, dl, NodeTys, Ops); - Chain = DAG.getNode(HexagonISD::CALL, dl, NodeTys, Ops); + int OpCode = doesNotReturn ? HexagonISD::CALLv3nr : HexagonISD::CALLv3; + Chain = DAG.getNode(OpCode, dl, NodeTys, Ops); InFlag = Chain.getValue(1); // Create the CALLSEQ_END node. @@ -1487,7 +1489,9 @@ HexagonTargetLowering::getTargetNodeName(unsigned Opcode) const { case HexagonISD::Lo: return "HexagonISD::Lo"; case HexagonISD::FTOI: return "HexagonISD::FTOI"; case HexagonISD::ITOF: return "HexagonISD::ITOF"; - case HexagonISD::CALL: return "HexagonISD::CALL"; + case HexagonISD::CALLv3: return "HexagonISD::CALLv3"; + case HexagonISD::CALLv3nr: return "HexagonISD::CALLv3nr"; + case HexagonISD::CALLR: return "HexagonISD::CALLR"; case HexagonISD::RET_FLAG: return "HexagonISD::RET_FLAG"; case HexagonISD::BR_JT: return "HexagonISD::BR_JT"; case HexagonISD::TC_RETURN: return "HexagonISD::TC_RETURN"; |