From: Evan Cheng Date: Mon, 18 Dec 2006 22:55:34 +0000 (+0000) Subject: LegalizeSetCCOperands() may end up inserting libcalls. They need to be X-Git-Url: http://plrg.eecs.uci.edu/git/?a=commitdiff_plain;h=722cb360690e5d7742b01a9f497fdb65bf8079d5;p=oota-llvm.git LegalizeSetCCOperands() may end up inserting libcalls. They need to be properly serialized. Do not clear LastCallSEQ_END until that is done. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@32659 91177308-0d34-0410-b5e6-96231b3b80d8 --- diff --git a/lib/CodeGen/SelectionDAG/LegalizeDAG.cpp b/lib/CodeGen/SelectionDAG/LegalizeDAG.cpp index 1808dacc2b5..faebbdcfafb 100644 --- a/lib/CodeGen/SelectionDAG/LegalizeDAG.cpp +++ b/lib/CodeGen/SelectionDAG/LegalizeDAG.cpp @@ -1360,14 +1360,13 @@ SDOperand SelectionDAGLegalize::LegalizeOp(SDOperand Op) { // Ensure that libcalls are emitted before a branch. Tmp1 = DAG.getNode(ISD::TokenFactor, MVT::Other, Tmp1, LastCALLSEQ_END); Tmp1 = LegalizeOp(Tmp1); - LastCALLSEQ_END = DAG.getEntryNode(); - Tmp2 = Node->getOperand(2); // LHS Tmp3 = Node->getOperand(3); // RHS Tmp4 = Node->getOperand(1); // CC LegalizeSetCCOperands(Tmp2, Tmp3, Tmp4); - + LastCALLSEQ_END = DAG.getEntryNode(); + // If we didn't get both a LHS and RHS back from LegalizeSetCCOperands, // the LHS is a legal SETCC itself. In this case, we need to compare // the result against zero to select between true and false values.