SelectNodeTo now returns a SDNode*.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@29901 91177308-0d34-0410-b5e6-96231b3b80d8
diff --git a/lib/CodeGen/SelectionDAG/SelectionDAG.cpp b/lib/CodeGen/SelectionDAG/SelectionDAG.cpp
index 15e3193..f4055b2 100644
--- a/lib/CodeGen/SelectionDAG/SelectionDAG.cpp
+++ b/lib/CodeGen/SelectionDAG/SelectionDAG.cpp
@@ -1834,13 +1834,13 @@
 /// Note that SelectNodeTo returns the resultant node.  If there is already a
 /// node of the specified opcode and operands, it returns that node instead of
 /// the current one.
-SDOperand SelectionDAG::SelectNodeTo(SDNode *N, unsigned TargetOpc,
-                                     MVT::ValueType VT) {
+SDNode *SelectionDAG::SelectNodeTo(SDNode *N, unsigned TargetOpc,
+                                   MVT::ValueType VT) {
   SDVTList VTs = getVTList(VT);
   SelectionDAGCSEMap::NodeID ID(ISD::BUILTIN_OP_END+TargetOpc, VTs);
   void *IP = 0;
   if (SDNode *ON = CSEMap.FindNodeOrInsertPos(ID, IP))
-    return SDOperand(ON, 0);
+    return ON;
    
   RemoveNodeFromCSEMaps(N);
   
@@ -1848,35 +1848,35 @@
   N->setValueTypes(VTs);
 
   CSEMap.InsertNode(N, IP);
-  return SDOperand(N, 0);
+  return N;
 }
 
-SDOperand SelectionDAG::SelectNodeTo(SDNode *N, unsigned TargetOpc,
-                                     MVT::ValueType VT, SDOperand Op1) {
+SDNode *SelectionDAG::SelectNodeTo(SDNode *N, unsigned TargetOpc,
+                                   MVT::ValueType VT, SDOperand Op1) {
   // If an identical node already exists, use it.
   SDVTList VTs = getVTList(VT);
   SelectionDAGCSEMap::NodeID ID(ISD::BUILTIN_OP_END+TargetOpc, VTs, Op1);
   void *IP = 0;
   if (SDNode *ON = CSEMap.FindNodeOrInsertPos(ID, IP))
-    return SDOperand(ON, 0);
+    return ON;
                                        
   RemoveNodeFromCSEMaps(N);
   N->MorphNodeTo(ISD::BUILTIN_OP_END+TargetOpc);
   N->setValueTypes(VTs);
   N->setOperands(Op1);
   CSEMap.InsertNode(N, IP);
-  return SDOperand(N, 0);
+  return N;
 }
 
-SDOperand SelectionDAG::SelectNodeTo(SDNode *N, unsigned TargetOpc,
-                                     MVT::ValueType VT, SDOperand Op1,
-                                     SDOperand Op2) {
+SDNode *SelectionDAG::SelectNodeTo(SDNode *N, unsigned TargetOpc,
+                                   MVT::ValueType VT, SDOperand Op1,
+                                   SDOperand Op2) {
   // If an identical node already exists, use it.
   SDVTList VTs = getVTList(VT);
   SelectionDAGCSEMap::NodeID ID(ISD::BUILTIN_OP_END+TargetOpc, VTs, Op1, Op2);
   void *IP = 0;
   if (SDNode *ON = CSEMap.FindNodeOrInsertPos(ID, IP))
-    return SDOperand(ON, 0);
+    return ON;
                                        
   RemoveNodeFromCSEMaps(N);
   N->MorphNodeTo(ISD::BUILTIN_OP_END+TargetOpc);
@@ -1884,19 +1884,19 @@
   N->setOperands(Op1, Op2);
   
   CSEMap.InsertNode(N, IP);   // Memoize the new node.
-  return SDOperand(N, 0);
+  return N;
 }
 
-SDOperand SelectionDAG::SelectNodeTo(SDNode *N, unsigned TargetOpc,
-                                     MVT::ValueType VT, SDOperand Op1,
-                                     SDOperand Op2, SDOperand Op3) {
+SDNode *SelectionDAG::SelectNodeTo(SDNode *N, unsigned TargetOpc,
+                                   MVT::ValueType VT, SDOperand Op1,
+                                   SDOperand Op2, SDOperand Op3) {
   // If an identical node already exists, use it.
   SDVTList VTs = getVTList(VT);
   SelectionDAGCSEMap::NodeID ID(ISD::BUILTIN_OP_END+TargetOpc, VTs,
                                 Op1, Op2, Op3);
   void *IP = 0;
   if (SDNode *ON = CSEMap.FindNodeOrInsertPos(ID, IP))
-    return SDOperand(ON, 0);
+    return ON;
                                        
   RemoveNodeFromCSEMaps(N);
   N->MorphNodeTo(ISD::BUILTIN_OP_END+TargetOpc);
@@ -1904,13 +1904,13 @@
   N->setOperands(Op1, Op2, Op3);
 
   CSEMap.InsertNode(N, IP);   // Memoize the new node.
-  return SDOperand(N, 0);
+  return N;
 }
 
-SDOperand SelectionDAG::SelectNodeTo(SDNode *N, unsigned TargetOpc,
-                                     MVT::ValueType VT, SDOperand Op1,
-                                     SDOperand Op2, SDOperand Op3,
-                                     SDOperand Op4) {
+SDNode *SelectionDAG::SelectNodeTo(SDNode *N, unsigned TargetOpc,
+                                   MVT::ValueType VT, SDOperand Op1,
+                                   SDOperand Op2, SDOperand Op3,
+                                   SDOperand Op4) {
   // If an identical node already exists, use it.
   SDVTList VTs = getVTList(VT);
   SelectionDAGCSEMap::NodeID ID(ISD::BUILTIN_OP_END+TargetOpc, VTs);
@@ -1920,7 +1920,7 @@
   ID.AddOperand(Op4);
   void *IP = 0;
   if (SDNode *ON = CSEMap.FindNodeOrInsertPos(ID, IP))
-    return SDOperand(ON, 0);
+    return ON;
   
   RemoveNodeFromCSEMaps(N);
   N->MorphNodeTo(ISD::BUILTIN_OP_END+TargetOpc);
@@ -1928,13 +1928,13 @@
   N->setOperands(Op1, Op2, Op3, Op4);
 
   CSEMap.InsertNode(N, IP);   // Memoize the new node.
-  return SDOperand(N, 0);
+  return N;
 }
 
-SDOperand SelectionDAG::SelectNodeTo(SDNode *N, unsigned TargetOpc,
-                                     MVT::ValueType VT, SDOperand Op1,
-                                     SDOperand Op2, SDOperand Op3,
-                                     SDOperand Op4, SDOperand Op5) {
+SDNode *SelectionDAG::SelectNodeTo(SDNode *N, unsigned TargetOpc,
+                                   MVT::ValueType VT, SDOperand Op1,
+                                   SDOperand Op2, SDOperand Op3,
+                                   SDOperand Op4, SDOperand Op5) {
   SDVTList VTs = getVTList(VT);
   SelectionDAGCSEMap::NodeID ID(ISD::BUILTIN_OP_END+TargetOpc, VTs);
   ID.AddOperand(Op1);
@@ -1944,7 +1944,7 @@
   ID.AddOperand(Op5);
   void *IP = 0;
   if (SDNode *ON = CSEMap.FindNodeOrInsertPos(ID, IP))
-    return SDOperand(ON, 0);
+    return ON;
                                        
   RemoveNodeFromCSEMaps(N);
   N->MorphNodeTo(ISD::BUILTIN_OP_END+TargetOpc);
@@ -1952,13 +1952,13 @@
   N->setOperands(Op1, Op2, Op3, Op4, Op5);
   
   CSEMap.InsertNode(N, IP);   // Memoize the new node.
-  return SDOperand(N, 0);
+  return N;
 }
 
-SDOperand SelectionDAG::SelectNodeTo(SDNode *N, unsigned TargetOpc,
-                                     MVT::ValueType VT, SDOperand Op1,
-                                     SDOperand Op2, SDOperand Op3,SDOperand Op4,
-                                     SDOperand Op5, SDOperand Op6) {
+SDNode *SelectionDAG::SelectNodeTo(SDNode *N, unsigned TargetOpc,
+                                   MVT::ValueType VT, SDOperand Op1,
+                                   SDOperand Op2, SDOperand Op3, SDOperand Op4,
+                                   SDOperand Op5, SDOperand Op6) {
   SDVTList VTs = getVTList(VT);
   SelectionDAGCSEMap::NodeID ID(ISD::BUILTIN_OP_END+TargetOpc, VTs);
   ID.AddOperand(Op1);
@@ -1969,7 +1969,7 @@
   ID.AddOperand(Op6);
   void *IP = 0;
   if (SDNode *ON = CSEMap.FindNodeOrInsertPos(ID, IP))
-    return SDOperand(ON, 0);
+    return ON;
                                        
   RemoveNodeFromCSEMaps(N);
   N->MorphNodeTo(ISD::BUILTIN_OP_END+TargetOpc);
@@ -1977,14 +1977,14 @@
   N->setOperands(Op1, Op2, Op3, Op4, Op5, Op6);
   
   CSEMap.InsertNode(N, IP);   // Memoize the new node.
-  return SDOperand(N, 0);
+  return N;
 }
 
-SDOperand SelectionDAG::SelectNodeTo(SDNode *N, unsigned TargetOpc,
-                                     MVT::ValueType VT, SDOperand Op1,
-                                     SDOperand Op2, SDOperand Op3,SDOperand Op4,
-                                     SDOperand Op5, SDOperand Op6,
-				     SDOperand Op7) {
+SDNode *SelectionDAG::SelectNodeTo(SDNode *N, unsigned TargetOpc,
+                                   MVT::ValueType VT, SDOperand Op1,
+                                   SDOperand Op2, SDOperand Op3,SDOperand Op4,
+                                   SDOperand Op5, SDOperand Op6,
+                                   SDOperand Op7) {
   SDVTList VTs = getVTList(VT);
   // If an identical node already exists, use it.
   SelectionDAGCSEMap::NodeID ID(ISD::BUILTIN_OP_END+TargetOpc, VTs);
@@ -1997,7 +1997,7 @@
   ID.AddOperand(Op7);
   void *IP = 0;
   if (SDNode *ON = CSEMap.FindNodeOrInsertPos(ID, IP))
-    return SDOperand(ON, 0);
+    return ON;
                                        
   RemoveNodeFromCSEMaps(N);
   N->MorphNodeTo(ISD::BUILTIN_OP_END+TargetOpc);
@@ -2005,13 +2005,13 @@
   N->setOperands(Op1, Op2, Op3, Op4, Op5, Op6, Op7);
   
   CSEMap.InsertNode(N, IP);   // Memoize the new node.
-  return SDOperand(N, 0);
+  return N;
 }
-SDOperand SelectionDAG::SelectNodeTo(SDNode *N, unsigned TargetOpc,
-                                     MVT::ValueType VT, SDOperand Op1,
-                                     SDOperand Op2, SDOperand Op3,SDOperand Op4,
-                                     SDOperand Op5, SDOperand Op6,
-				     SDOperand Op7, SDOperand Op8) {
+SDNode *SelectionDAG::SelectNodeTo(SDNode *N, unsigned TargetOpc,
+                                   MVT::ValueType VT, SDOperand Op1,
+                                   SDOperand Op2, SDOperand Op3,SDOperand Op4,
+                                   SDOperand Op5, SDOperand Op6,
+                                   SDOperand Op7, SDOperand Op8) {
   // If an identical node already exists, use it.
   SDVTList VTs = getVTList(VT);
   SelectionDAGCSEMap::NodeID ID(ISD::BUILTIN_OP_END+TargetOpc, VTs);
@@ -2025,7 +2025,7 @@
   ID.AddOperand(Op8);
   void *IP = 0;
   if (SDNode *ON = CSEMap.FindNodeOrInsertPos(ID, IP))
-    return SDOperand(ON, 0);
+    return ON;
                                        
   RemoveNodeFromCSEMaps(N);
   N->MorphNodeTo(ISD::BUILTIN_OP_END+TargetOpc);
@@ -2033,17 +2033,17 @@
   N->setOperands(Op1, Op2, Op3, Op4, Op5, Op6, Op7, Op8);
   
   CSEMap.InsertNode(N, IP);   // Memoize the new node.
-  return SDOperand(N, 0);
+  return N;
 }
 
-SDOperand SelectionDAG::SelectNodeTo(SDNode *N, unsigned TargetOpc, 
-                                     MVT::ValueType VT1, MVT::ValueType VT2,
-                                     SDOperand Op1, SDOperand Op2) {
+SDNode *SelectionDAG::SelectNodeTo(SDNode *N, unsigned TargetOpc, 
+                                   MVT::ValueType VT1, MVT::ValueType VT2,
+                                   SDOperand Op1, SDOperand Op2) {
   SDVTList VTs = getVTList(VT1, VT2);
   SelectionDAGCSEMap::NodeID ID(ISD::BUILTIN_OP_END+TargetOpc, VTs, Op1, Op2);
   void *IP = 0;
   if (SDNode *ON = CSEMap.FindNodeOrInsertPos(ID, IP))
-    return SDOperand(ON, 0);
+    return ON;
 
   RemoveNodeFromCSEMaps(N);
   N->MorphNodeTo(ISD::BUILTIN_OP_END+TargetOpc);
@@ -2051,20 +2051,20 @@
   N->setOperands(Op1, Op2);
   
   CSEMap.InsertNode(N, IP);   // Memoize the new node.
-  return SDOperand(N, 0);
+  return N;
 }
 
-SDOperand SelectionDAG::SelectNodeTo(SDNode *N, unsigned TargetOpc,
-                                     MVT::ValueType VT1, MVT::ValueType VT2,
-                                     SDOperand Op1, SDOperand Op2, 
-                                     SDOperand Op3) {
+SDNode *SelectionDAG::SelectNodeTo(SDNode *N, unsigned TargetOpc,
+                                   MVT::ValueType VT1, MVT::ValueType VT2,
+                                   SDOperand Op1, SDOperand Op2, 
+                                   SDOperand Op3) {
   // If an identical node already exists, use it.
   SDVTList VTs = getVTList(VT1, VT2);
   SelectionDAGCSEMap::NodeID ID(ISD::BUILTIN_OP_END+TargetOpc, VTs,
                                 Op1, Op2, Op3);
   void *IP = 0;
   if (SDNode *ON = CSEMap.FindNodeOrInsertPos(ID, IP))
-    return SDOperand(ON, 0);
+    return ON;
 
   RemoveNodeFromCSEMaps(N);
   N->MorphNodeTo(ISD::BUILTIN_OP_END+TargetOpc);
@@ -2072,13 +2072,13 @@
   N->setOperands(Op1, Op2, Op3);
   
   CSEMap.InsertNode(N, IP);   // Memoize the new node.
-  return SDOperand(N, 0);
+  return N;
 }
 
-SDOperand SelectionDAG::SelectNodeTo(SDNode *N, unsigned TargetOpc,
-                                     MVT::ValueType VT1, MVT::ValueType VT2,
-                                     SDOperand Op1, SDOperand Op2,
-                                     SDOperand Op3, SDOperand Op4) {
+SDNode *SelectionDAG::SelectNodeTo(SDNode *N, unsigned TargetOpc,
+                                   MVT::ValueType VT1, MVT::ValueType VT2,
+                                   SDOperand Op1, SDOperand Op2,
+                                   SDOperand Op3, SDOperand Op4) {
   // If an identical node already exists, use it.
   SDVTList VTs = getVTList(VT1, VT2);
   SelectionDAGCSEMap::NodeID ID(ISD::BUILTIN_OP_END+TargetOpc, VTs);
@@ -2088,7 +2088,7 @@
   ID.AddOperand(Op4);
   void *IP = 0;
   if (SDNode *ON = CSEMap.FindNodeOrInsertPos(ID, IP))
-    return SDOperand(ON, 0);
+    return ON;
                                        
   RemoveNodeFromCSEMaps(N);
   N->MorphNodeTo(ISD::BUILTIN_OP_END+TargetOpc);
@@ -2096,14 +2096,14 @@
   N->setOperands(Op1, Op2, Op3, Op4);
 
   CSEMap.InsertNode(N, IP);   // Memoize the new node.
-  return SDOperand(N, 0);
+  return N;
 }
 
-SDOperand SelectionDAG::SelectNodeTo(SDNode *N, unsigned TargetOpc,
-                                     MVT::ValueType VT1, MVT::ValueType VT2,
-                                     SDOperand Op1, SDOperand Op2,
-                                     SDOperand Op3, SDOperand Op4, 
-                                     SDOperand Op5) {
+SDNode *SelectionDAG::SelectNodeTo(SDNode *N, unsigned TargetOpc,
+                                   MVT::ValueType VT1, MVT::ValueType VT2,
+                                   SDOperand Op1, SDOperand Op2,
+                                   SDOperand Op3, SDOperand Op4, 
+                                   SDOperand Op5) {
   // If an identical node already exists, use it.
   SDVTList VTs = getVTList(VT1, VT2);
   SelectionDAGCSEMap::NodeID ID(ISD::BUILTIN_OP_END+TargetOpc, VTs);
@@ -2114,7 +2114,7 @@
   ID.AddOperand(Op5);
   void *IP = 0;
   if (SDNode *ON = CSEMap.FindNodeOrInsertPos(ID, IP))
-    return SDOperand(ON, 0);
+    return ON;
                                        
   RemoveNodeFromCSEMaps(N);
   N->MorphNodeTo(ISD::BUILTIN_OP_END+TargetOpc);
@@ -2122,7 +2122,7 @@
   N->setOperands(Op1, Op2, Op3, Op4, Op5);
   
   CSEMap.InsertNode(N, IP);   // Memoize the new node.
-  return SDOperand(N, 0);
+  return N;
 }
 
 /// getTargetNode - These are used for target selectors to create a new node
diff --git a/lib/Target/Alpha/AlphaISelDAGToDAG.cpp b/lib/Target/Alpha/AlphaISelDAGToDAG.cpp
index d84f260..52aa8bb 100644
--- a/lib/Target/Alpha/AlphaISelDAGToDAG.cpp
+++ b/lib/Target/Alpha/AlphaISelDAGToDAG.cpp
@@ -199,7 +199,7 @@
     int FI = cast<FrameIndexSDNode>(N)->getIndex();
     return CurDAG->SelectNodeTo(N, Alpha::LDA, MVT::i64,
                                 CurDAG->getTargetFrameIndex(FI, MVT::i32),
-                                getI64Imm(0)).Val;
+                                getI64Imm(0));
   }
   case AlphaISD::GlobalBaseReg: {
     SDOperand Result = getGlobalBaseReg();
@@ -231,7 +231,7 @@
                             Chain, Chain.getValue(1));
     Chain = CurDAG->getCopyFromReg(Chain, Alpha::R27, MVT::i64, 
 				  SDOperand(CNode, 1));
-    return CurDAG->SelectNodeTo(N, Alpha::BIS, MVT::i64, Chain, Chain).Val;
+    return CurDAG->SelectNodeTo(N, Alpha::BIS, MVT::i64, Chain, Chain);
   }
 
   case ISD::READCYCLECOUNTER: {
@@ -268,7 +268,7 @@
     SDNode *Tmp = CurDAG->getTargetNode(Alpha::LDAHr, MVT::i64, CPI,
                                         getGlobalBaseReg());
     return CurDAG->SelectNodeTo(N, Alpha::LDQr, MVT::i64, MVT::Other, 
-                            CPI, SDOperand(Tmp, 0), CurDAG->getEntryNode()).Val;
+                            CPI, SDOperand(Tmp, 0), CurDAG->getEntryNode());
   }
   case ISD::TargetConstantFP: {
     ConstantFPSDNode *CN = cast<ConstantFPSDNode>(N);
@@ -277,11 +277,11 @@
     if (CN->isExactlyValue(+0.0)) {
       return CurDAG->SelectNodeTo(N, isDouble ? Alpha::CPYST : Alpha::CPYSS,
                                   T, CurDAG->getRegister(Alpha::F31, T),
-                                  CurDAG->getRegister(Alpha::F31, T)).Val;
+                                  CurDAG->getRegister(Alpha::F31, T));
     } else if ( CN->isExactlyValue(-0.0)) {
       return CurDAG->SelectNodeTo(N, isDouble ? Alpha::CPYSNT : Alpha::CPYSNS,
                                   T, CurDAG->getRegister(Alpha::F31, T),
-                                  CurDAG->getRegister(Alpha::F31, T)).Val;
+                                  CurDAG->getRegister(Alpha::F31, T));
     } else {
       abort();
     }
diff --git a/lib/Target/IA64/IA64ISelDAGToDAG.cpp b/lib/Target/IA64/IA64ISelDAGToDAG.cpp
index b384705..3948c53 100644
--- a/lib/Target/IA64/IA64ISelDAGToDAG.cpp
+++ b/lib/Target/IA64/IA64ISelDAGToDAG.cpp
@@ -408,10 +408,10 @@
     int FI = cast<FrameIndexSDNode>(N)->getIndex();
     if (N->hasOneUse())
       return CurDAG->SelectNodeTo(N, IA64::MOV, MVT::i64,
-                                 CurDAG->getTargetFrameIndex(FI, MVT::i64)).Val;
+                                 CurDAG->getTargetFrameIndex(FI, MVT::i64));
     else
-      return SDOperand(CurDAG->getTargetNode(IA64::MOV, MVT::i64,
-                             CurDAG->getTargetFrameIndex(FI, MVT::i64)), 0).Val;
+      return CurDAG->getTargetNode(IA64::MOV, MVT::i64,
+                                   CurDAG->getTargetFrameIndex(FI, MVT::i64));
   }
 
   case ISD::ConstantPool: { // TODO: nuke the constant pool
@@ -464,7 +464,7 @@
         return CurDAG->SelectNodeTo(N, IA64::CMPNE, MVT::i1, MVT::Other, 
                     SDOperand(CurDAG->getTargetNode(Opc, MVT::i64, Address), 0),
                                     CurDAG->getRegister(IA64::r0, MVT::i64), 
-                                    Chain).getValue(Op.ResNo).Val;
+                                    Chain);
       }
       /* otherwise, we want to load a bool into something bigger: LD1
          will do that for us, so we just fall through */
@@ -480,7 +480,7 @@
 
     // TODO: comment this
     return CurDAG->SelectNodeTo(N, Opc, N->getValueType(0), MVT::Other,
-                                Address, Chain).getValue(Op.ResNo).Val;
+                                Address, Chain);
   }
   
   case ISD::TRUNCSTORE:
@@ -505,7 +505,7 @@
         Tmp = SDOperand(CurDAG->getTargetNode(IA64::TPCADDS, MVT::i64, Initial,
                                               CurDAG->getConstant(1, MVT::i64),
                                               Tmp), 0);
-        return CurDAG->SelectNodeTo(N, Opc, MVT::Other, Address, Tmp, Chain).Val;
+        return CurDAG->SelectNodeTo(N, Opc, MVT::Other, Address, Tmp, Chain);
       }
       case MVT::i64: Opc = IA64::ST8;  break;
       case MVT::f64: Opc = IA64::STF8; break;
@@ -524,7 +524,7 @@
     SDOperand N2 = N->getOperand(2);
     AddToISelQueue(N1);
     AddToISelQueue(N2);
-    return CurDAG->SelectNodeTo(N, Opc, MVT::Other, N2, N1, Chain).Val;
+    return CurDAG->SelectNodeTo(N, Opc, MVT::Other, N2, N1, Chain);
   }
 
   case ISD::BRCOND: {
@@ -536,7 +536,7 @@
       cast<BasicBlockSDNode>(N->getOperand(2))->getBasicBlock();
     //FIXME - we do NOT need long branches all the time
     return CurDAG->SelectNodeTo(N, IA64::BRLCOND_NOTCALL, MVT::Other, CC, 
-                                CurDAG->getBasicBlock(Dest), Chain).Val;
+                                CurDAG->getBasicBlock(Dest), Chain);
   }
 
   case ISD::CALLSEQ_START:
@@ -546,7 +546,7 @@
                        IA64::ADJUSTCALLSTACKDOWN : IA64::ADJUSTCALLSTACKUP;
     SDOperand N0 = N->getOperand(0);
     AddToISelQueue(N0);
-    return CurDAG->SelectNodeTo(N, Opc, MVT::Other, getI64Imm(Amt), N0).Val;
+    return CurDAG->SelectNodeTo(N, Opc, MVT::Other, getI64Imm(Amt), N0);
   }
 
   case ISD::BR:
@@ -554,7 +554,7 @@
     SDOperand N0 = N->getOperand(0);
     AddToISelQueue(N0);
     return CurDAG->SelectNodeTo(N, IA64::BRL_NOTCALL, MVT::Other, 
-                                N->getOperand(1), N0).Val;
+                                N->getOperand(1), N0);
   }
   
   return SelectCode(Op);
diff --git a/lib/Target/PowerPC/PPCISelDAGToDAG.cpp b/lib/Target/PowerPC/PPCISelDAGToDAG.cpp
index 22752ab..507a2a3 100644
--- a/lib/Target/PowerPC/PPCISelDAGToDAG.cpp
+++ b/lib/Target/PowerPC/PPCISelDAGToDAG.cpp
@@ -812,23 +812,23 @@
       case ISD::SETEQ:
         Op = SDOperand(CurDAG->getTargetNode(PPC::CNTLZW, MVT::i32, Op), 0);
         return CurDAG->SelectNodeTo(N, PPC::RLWINM, MVT::i32, Op, getI32Imm(27),
-                                    getI32Imm(5), getI32Imm(31)).Val;
+                                    getI32Imm(5), getI32Imm(31));
       case ISD::SETNE: {
         SDOperand AD =
           SDOperand(CurDAG->getTargetNode(PPC::ADDIC, MVT::i32, MVT::Flag,
                                           Op, getI32Imm(~0U)), 0);
         return CurDAG->SelectNodeTo(N, PPC::SUBFE, MVT::i32, AD, Op, 
-                                    AD.getValue(1)).Val;
+                                    AD.getValue(1));
       }
       case ISD::SETLT:
         return CurDAG->SelectNodeTo(N, PPC::RLWINM, MVT::i32, Op, getI32Imm(1),
-                                    getI32Imm(31), getI32Imm(31)).Val;
+                                    getI32Imm(31), getI32Imm(31));
       case ISD::SETGT: {
         SDOperand T =
           SDOperand(CurDAG->getTargetNode(PPC::NEG, MVT::i32, Op), 0);
         T = SDOperand(CurDAG->getTargetNode(PPC::ANDC, MVT::i32, T, Op), 0);
         return CurDAG->SelectNodeTo(N, PPC::RLWINM, MVT::i32, T, getI32Imm(1),
-                                    getI32Imm(31), getI32Imm(31)).Val;
+                                    getI32Imm(31), getI32Imm(31));
       }
       }
     } else if (Imm == ~0U) {        // setcc op, -1
@@ -842,13 +842,13 @@
         return CurDAG->SelectNodeTo(N, PPC::ADDZE, MVT::i32, 
                               SDOperand(CurDAG->getTargetNode(PPC::LI, MVT::i32,
                                                               getI32Imm(0)), 0),
-                                    Op.getValue(1)).Val;
+                                    Op.getValue(1));
       case ISD::SETNE: {
         Op = SDOperand(CurDAG->getTargetNode(PPC::NOR, MVT::i32, Op, Op), 0);
         SDNode *AD = CurDAG->getTargetNode(PPC::ADDIC, MVT::i32, MVT::Flag,
                                            Op, getI32Imm(~0U));
         return CurDAG->SelectNodeTo(N, PPC::SUBFE, MVT::i32, SDOperand(AD, 0),
-                                    Op, SDOperand(AD, 1)).Val;
+                                    Op, SDOperand(AD, 1));
       }
       case ISD::SETLT: {
         SDOperand AD = SDOperand(CurDAG->getTargetNode(PPC::ADDI, MVT::i32, Op,
@@ -856,14 +856,14 @@
         SDOperand AN = SDOperand(CurDAG->getTargetNode(PPC::AND, MVT::i32, AD,
                                                        Op), 0);
         return CurDAG->SelectNodeTo(N, PPC::RLWINM, MVT::i32, AN, getI32Imm(1),
-                                    getI32Imm(31), getI32Imm(31)).Val;
+                                    getI32Imm(31), getI32Imm(31));
       }
       case ISD::SETGT:
         Op = SDOperand(CurDAG->getTargetNode(PPC::RLWINM, MVT::i32, Op,
                                              getI32Imm(1), getI32Imm(31),
                                              getI32Imm(31)), 0);
         return CurDAG->SelectNodeTo(N, PPC::XORI, MVT::i32, Op, 
-                                    getI32Imm(1)).Val;
+                                    getI32Imm(1));
       }
     }
   }
@@ -889,13 +889,13 @@
   if (!Inv) {
     return CurDAG->SelectNodeTo(N, PPC::RLWINM, MVT::i32, IntCR,
                                 getI32Imm((32-(3-Idx)) & 31),
-                                getI32Imm(31), getI32Imm(31)).Val;
+                                getI32Imm(31), getI32Imm(31));
   } else {
     SDOperand Tmp =
       SDOperand(CurDAG->getTargetNode(PPC::RLWINM, MVT::i32, IntCR,
                                       getI32Imm((32-(3-Idx)) & 31),
                                       getI32Imm(31),getI32Imm(31)), 0);
-    return CurDAG->SelectNodeTo(N, PPC::XORI, MVT::i32, Tmp, getI32Imm(1)).Val;
+    return CurDAG->SelectNodeTo(N, PPC::XORI, MVT::i32, Tmp, getI32Imm(1));
   }
 }
 
@@ -921,7 +921,7 @@
     unsigned Opc = Op.getValueType() == MVT::i32 ? PPC::ADDI : PPC::ADDI8;
     if (N->hasOneUse())
       return CurDAG->SelectNodeTo(N, Opc, Op.getValueType(), TFI,
-                                  getSmallIPtrImm(0)).Val;
+                                  getSmallIPtrImm(0));
     return CurDAG->getTargetNode(Opc, Op.getValueType(), TFI,
                                  getSmallIPtrImm(0));
   }
@@ -952,7 +952,7 @@
           CurDAG->getTargetNode(PPC::SRAWI, MVT::i32, MVT::Flag,
                                 N0, getI32Imm(Log2_32(Imm)));
         return CurDAG->SelectNodeTo(N, PPC::ADDZE, MVT::i32, 
-                                    SDOperand(Op, 0), SDOperand(Op, 1)).Val;
+                                    SDOperand(Op, 0), SDOperand(Op, 1));
       } else if ((signed)Imm < 0 && isPowerOf2_32(-Imm)) {
         SDNode *Op =
           CurDAG->getTargetNode(PPC::SRAWI, MVT::i32, MVT::Flag,
@@ -961,7 +961,7 @@
           SDOperand(CurDAG->getTargetNode(PPC::ADDZE, MVT::i32,
                                           SDOperand(Op, 0), SDOperand(Op, 1)),
                     0);
-        return CurDAG->SelectNodeTo(N, PPC::NEG, MVT::i32, PT).Val;
+        return CurDAG->SelectNodeTo(N, PPC::NEG, MVT::i32, PT);
       }
     }
     
@@ -992,7 +992,7 @@
       }
       return CurDAG->SelectNodeTo(N, PPC::RLWINM, MVT::i32, Val,
                                   getI32Imm(SH), getI32Imm(MB),
-                                  getI32Imm(ME)).Val;
+                                  getI32Imm(ME));
     }
     // ISD::OR doesn't get all the bitfield insertion fun.
     // (and (or x, c1), c2) where isRunOfOnes(~(c1^c2)) is a bitfield insert
@@ -1029,7 +1029,7 @@
       return CurDAG->SelectNodeTo(N, PPC::RLWINM, MVT::i32, 
                                   N->getOperand(0).getOperand(0),
                                   getI32Imm(SH), getI32Imm(MB),
-                                  getI32Imm(ME)).Val;
+                                  getI32Imm(ME));
     }
     
     // Other cases are autogenerated.
@@ -1043,7 +1043,7 @@
       return CurDAG->SelectNodeTo(N, PPC::RLWINM, MVT::i32, 
                                   N->getOperand(0).getOperand(0),
                                   getI32Imm(SH), getI32Imm(MB),
-                                  getI32Imm(ME)).Val;
+                                  getI32Imm(ME));
     }
     
     // Other cases are autogenerated.
@@ -1066,7 +1066,7 @@
                                     N->getOperand(0), getI32Imm(~0U));
             return CurDAG->SelectNodeTo(N, PPC::SUBFE, MVT::i32,
                                         SDOperand(Tmp, 0), N->getOperand(0),
-                                        SDOperand(Tmp, 1)).Val;
+                                        SDOperand(Tmp, 1));
           }
 
     SDOperand CCReg = SelectCC(N->getOperand(0), N->getOperand(1), CC);
@@ -1089,7 +1089,7 @@
     AddToISelQueue(N->getOperand(3));
     return CurDAG->SelectNodeTo(N, SelectCCOp, N->getValueType(0), CCReg,
                                 N->getOperand(2), N->getOperand(3),
-                                getI32Imm(BROpc)).Val;
+                                getI32Imm(BROpc));
   }
   case ISD::BR_CC: {
     AddToISelQueue(N->getOperand(0));
@@ -1097,7 +1097,7 @@
     SDOperand CondCode = SelectCC(N->getOperand(2), N->getOperand(3), CC);
     return CurDAG->SelectNodeTo(N, PPC::COND_BRANCH, MVT::Other, 
                                 CondCode, getI32Imm(getBCCForSetCC(CC)), 
-                                N->getOperand(4), N->getOperand(0)).Val;
+                                N->getOperand(4), N->getOperand(0));
   }
   case ISD::BRIND: {
     // FIXME: Should custom lower this.
@@ -1108,7 +1108,7 @@
     unsigned Opc = Target.getValueType() == MVT::i32 ? PPC::MTCTR : PPC::MTCTR8;
     Chain = SDOperand(CurDAG->getTargetNode(Opc, MVT::Other, Target,
                                             Chain), 0);
-    return CurDAG->SelectNodeTo(N, PPC::BCTR, MVT::Other, Chain).Val;
+    return CurDAG->SelectNodeTo(N, PPC::BCTR, MVT::Other, Chain);
   }
   // FIXME: These are manually selected because tblgen isn't handling varargs
   // nodes correctly.
diff --git a/lib/Target/Sparc/SparcISelDAGToDAG.cpp b/lib/Target/Sparc/SparcISelDAGToDAG.cpp
index 7c298c7..a30e739 100644
--- a/lib/Target/Sparc/SparcISelDAGToDAG.cpp
+++ b/lib/Target/Sparc/SparcISelDAGToDAG.cpp
@@ -1093,7 +1093,7 @@
     // FIXME: Handle div by immediate.
     unsigned Opcode = N->getOpcode() == ISD::SDIV ? SP::SDIVrr : SP::UDIVrr;
     return CurDAG->SelectNodeTo(N, Opcode, MVT::i32, DivLHS, DivRHS,
-                                TopPart).Val;
+                                TopPart);
   }    
   case ISD::MULHU:
   case ISD::MULHS: {
@@ -1106,7 +1106,7 @@
     SDNode *Mul = CurDAG->getTargetNode(Opcode, MVT::i32, MVT::Flag,
                                         MulLHS, MulRHS);
     // The high part is in the Y register.
-    return CurDAG->SelectNodeTo(N, SP::RDY, MVT::i32, SDOperand(Mul, 1)).Val;
+    return CurDAG->SelectNodeTo(N, SP::RDY, MVT::i32, SDOperand(Mul, 1));
     return NULL;
   }
   }
diff --git a/lib/Target/X86/X86ISelDAGToDAG.cpp b/lib/Target/X86/X86ISelDAGToDAG.cpp
index 6ec294c..5720011 100644
--- a/lib/Target/X86/X86ISelDAGToDAG.cpp
+++ b/lib/Target/X86/X86ISelDAGToDAG.cpp
@@ -658,7 +658,7 @@
         }
 
         if (C.Val)
-          return CurDAG->SelectNodeTo(N.Val, X86::MOV32ri, MVT::i32, C).Val;
+          return CurDAG->SelectNodeTo(N.Val, X86::MOV32ri, MVT::i32, C);
       }
 
       // Other cases are handled by auto-generated code.