diff --git a/lib/CodeGen/SelectionDAG/FastISel.cpp b/lib/CodeGen/SelectionDAG/FastISel.cpp
index b45a4fd..037a46d 100644
--- a/lib/CodeGen/SelectionDAG/FastISel.cpp
+++ b/lib/CodeGen/SelectionDAG/FastISel.cpp
@@ -401,6 +401,7 @@
       bool InsertedCopy = TII.copyRegToReg(*MBB, MBB->end(), ResultReg,
                                            Reg, RC, RC);
       assert(InsertedCopy && "Can't copy address registers!");
+      InsertedCopy = InsertedCopy;
       UpdateValueMap(I, ResultReg);
       return true;
     }
@@ -434,6 +435,7 @@
         bool InsertedCopy = TII.copyRegToReg(*MBB, MBB->end(), ResultReg,
                                              Reg, RC, RC);
         assert(InsertedCopy && "Can't copy address registers!");
+        InsertedCopy = InsertedCopy;
         UpdateValueMap(I, ResultReg);
       } else {
         unsigned ResultReg =
diff --git a/lib/CodeGen/SelectionDAG/LegalizeDAG.cpp b/lib/CodeGen/SelectionDAG/LegalizeDAG.cpp
index d24c846..0e926ad 100644
--- a/lib/CodeGen/SelectionDAG/LegalizeDAG.cpp
+++ b/lib/CodeGen/SelectionDAG/LegalizeDAG.cpp
@@ -114,12 +114,14 @@
   void AddPromotedOperand(SDValue From, SDValue To) {
     bool isNew = PromotedNodes.insert(std::make_pair(From, To)).second;
     assert(isNew && "Got into the map somehow?");
+    isNew = isNew;
     // If someone requests legalization of the new node, return itself.
     LegalizedNodes.insert(std::make_pair(To, To));
   }
   void AddWidenedOperand(SDValue From, SDValue To) {
     bool isNew = WidenNodes.insert(std::make_pair(From, To)).second;
     assert(isNew && "Got into the map somehow?");
+    isNew = isNew;
     // If someone requests legalization of the new node, return itself.
     LegalizedNodes.insert(std::make_pair(To, To));
   }
@@ -7163,6 +7165,7 @@
   bool isNew =
     ExpandedNodes.insert(std::make_pair(Op, std::make_pair(Lo, Hi))).second;
   assert(isNew && "Value already expanded?!?");
+  isNew = isNew;
 }
 
 /// SplitVectorOp - Given an operand of vector type, break it down into
@@ -7509,6 +7512,7 @@
   bool isNew = 
     SplitNodes.insert(std::make_pair(Op, std::make_pair(Lo, Hi))).second;
   assert(isNew && "Value already split?!?");
+  isNew = isNew;
 }
 
 
@@ -7676,6 +7680,7 @@
     Result = LegalizeOp(Result);
   bool isNew = ScalarizedNodes.insert(std::make_pair(Op, Result)).second;
   assert(isNew && "Value already scalarized?");
+  isNew = isNew;
   return Result;
 }
 
diff --git a/lib/CodeGen/SelectionDAG/SelectionDAG.cpp b/lib/CodeGen/SelectionDAG/SelectionDAG.cpp
index f55bdec..41aa044 100644
--- a/lib/CodeGen/SelectionDAG/SelectionDAG.cpp
+++ b/lib/CodeGen/SelectionDAG/SelectionDAG.cpp
@@ -1212,9 +1212,11 @@
 }
 
 SDValue SelectionDAG::getMemOperand(const MachineMemOperand &MO) {
+#ifndef NDEBUG
   const Value *v = MO.getValue();
   assert((!v || isa<PointerType>(v->getType())) &&
          "SrcValue is not a pointer?");
+#endif
 
   FoldingSetNodeID ID;
   AddNodeIDNode(ID, ISD::MEMOPERAND, getVTList(MVT::Other), 0, 0);
