LegalizeSetCCOperands() may end up inserting libcalls. They need to be
authorEvan Cheng <evan.cheng@apple.com>
Mon, 18 Dec 2006 22:55:34 +0000 (22:55 +0000)
committerEvan Cheng <evan.cheng@apple.com>
Mon, 18 Dec 2006 22:55:34 +0000 (22:55 +0000)
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

lib/CodeGen/SelectionDAG/LegalizeDAG.cpp

index 1808dacc2b54ad6a847d0987a9e49487ef687c0f..faebbdcfafb30a586d4a3d04f7d12d7794598450 100644 (file)
@@ -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.