[llvm-commits] [llvm] r60958 - /llvm/trunk/lib/CodeGen/SelectionDAG/LegalizeDAG.cpp

Evan Cheng evan.cheng at apple.com
Fri Dec 12 10:49:09 PST 2008


Author: evancheng
Date: Fri Dec 12 12:49:09 2008
New Revision: 60958

URL: http://llvm.org/viewvc/llvm-project?rev=60958&view=rev
Log:
Fix add/sub expansion: don't create ADD / SUB with two results (seems like everyone is doing this these days :-). Patch by Daniel M Gessel!

Modified:
    llvm/trunk/lib/CodeGen/SelectionDAG/LegalizeDAG.cpp

Modified: llvm/trunk/lib/CodeGen/SelectionDAG/LegalizeDAG.cpp
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/CodeGen/SelectionDAG/LegalizeDAG.cpp?rev=60958&r1=60957&r2=60958&view=diff

==============================================================================
--- llvm/trunk/lib/CodeGen/SelectionDAG/LegalizeDAG.cpp (original)
+++ llvm/trunk/lib/CodeGen/SelectionDAG/LegalizeDAG.cpp Fri Dec 12 12:49:09 2008
@@ -6862,7 +6862,6 @@
     SDValue LHSL, LHSH, RHSL, RHSH;
     ExpandOp(Node->getOperand(0), LHSL, LHSH);
     ExpandOp(Node->getOperand(1), RHSL, RHSH);
-    SDVTList VTList = DAG.getVTList(LHSL.getValueType(), MVT::Flag);
     SDValue LoOps[2], HiOps[3];
     LoOps[0] = LHSL;
     LoOps[1] = RHSL;
@@ -6881,6 +6880,7 @@
     }
 
     if(hasCarry) {
+      SDVTList VTList = DAG.getVTList(LHSL.getValueType(), MVT::Flag);
       if (Node->getOpcode() == ISD::ADD) {
         Lo = DAG.getNode(ISD::ADDC, VTList, LoOps, 2);
         HiOps[2] = Lo.getValue(1);
@@ -6893,8 +6893,8 @@
       break;
     } else {
       if (Node->getOpcode() == ISD::ADD) {
-        Lo = DAG.getNode(ISD::ADD, VTList, LoOps, 2);
-        Hi = DAG.getNode(ISD::ADD, VTList, HiOps, 2);
+        Lo = DAG.getNode(ISD::ADD, NVT, LoOps, 2);
+        Hi = DAG.getNode(ISD::ADD, NVT, HiOps, 2);
         SDValue Cmp1 = DAG.getSetCC(TLI.getSetCCResultType(Lo),
                                     Lo, LoOps[0], ISD::SETULT);
         SDValue Carry1 = DAG.getNode(ISD::SELECT, NVT, Cmp1,
@@ -6907,8 +6907,8 @@
                                     Carry1);
         Hi = DAG.getNode(ISD::ADD, NVT, Hi, Carry2);
       } else {
-        Lo = DAG.getNode(ISD::SUB, VTList, LoOps, 2);
-        Hi = DAG.getNode(ISD::SUB, VTList, HiOps, 2);
+        Lo = DAG.getNode(ISD::SUB, NVT, LoOps, 2);
+        Hi = DAG.getNode(ISD::SUB, NVT, HiOps, 2);
         SDValue Cmp = DAG.getSetCC(NVT, LoOps[0], LoOps[1], ISD::SETULT);
         SDValue Borrow = DAG.getNode(ISD::SELECT, NVT, Cmp,
                                      DAG.getConstant(1, NVT), 





More information about the llvm-commits mailing list