diff options
Diffstat (limited to 'llvm/lib')
| -rw-r--r-- | llvm/lib/CodeGen/SelectionDAG/LegalizeDAG.cpp | 6 | 
1 files changed, 5 insertions, 1 deletions
diff --git a/llvm/lib/CodeGen/SelectionDAG/LegalizeDAG.cpp b/llvm/lib/CodeGen/SelectionDAG/LegalizeDAG.cpp index 22b5ae602ce..a96a99781f4 100644 --- a/llvm/lib/CodeGen/SelectionDAG/LegalizeDAG.cpp +++ b/llvm/lib/CodeGen/SelectionDAG/LegalizeDAG.cpp @@ -1790,7 +1790,11 @@ SDValue SelectionDAGLegalize::ExpandLibCall(RTLIB::Libcall LC, SDNode *Node,    // isTailCall may be true since the callee does not reference caller stack    // frame. Check if it's in the right position. -  bool isTailCall = isInTailCallPosition(DAG, Node, InChain, TLI); +  SDValue TCChain = InChain; +  bool isTailCall = isInTailCallPosition(DAG, Node, TCChain, TLI); +  if (isTailCall) +    InChain = TCChain; +    std::pair<SDValue, SDValue> CallInfo =      TLI.LowerCallTo(InChain, RetTy, isSigned, !isSigned, false, false,                      0, TLI.getLibcallCallingConv(LC), isTailCall,  | 

