diff --git a/lib/CodeGen/SelectionDAG/LegalizeDAG.cpp b/lib/CodeGen/SelectionDAG/LegalizeDAG.cpp
index 1928584..a19e611 100644
--- a/lib/CodeGen/SelectionDAG/LegalizeDAG.cpp
+++ b/lib/CodeGen/SelectionDAG/LegalizeDAG.cpp
@@ -1134,15 +1134,15 @@
       }
       case ISD::CTLZ: {
         /* for now, we do this:
-        x = x | (x >> 1);
-        x = x | (x >> 2);
-        ...
-        x = x | (x >>16);
-        x = x | (x >>32); // for 64-bit input 
-        return popcount(~x);
+           x = x | (x >> 1);
+           x = x | (x >> 2);
+           ...
+           x = x | (x >>16);
+           x = x | (x >>32); // for 64-bit input 
+           return popcount(~x);
         
-	but see also: http://www.hackersdelight.org/HDcode/nlz.cc */
-	MVT::ValueType VT = Tmp1.getValueType();
+           but see also: http://www.hackersdelight.org/HDcode/nlz.cc */
+        MVT::ValueType VT = Tmp1.getValueType();
         MVT::ValueType ShVT = TLI.getShiftAmountTy();
         unsigned len = getSizeInBits(VT);
         for (unsigned i = 0; (1U << i) <= (len / 2); ++i) {
@@ -1151,19 +1151,19 @@
                              DAG.getNode(ISD::SRL, VT, Tmp1, Tmp3));
         }
         Tmp3 = DAG.getNode(ISD::XOR, VT, Tmp1, DAG.getConstant(~0ULL, VT));
-	Result = DAG.getNode(ISD::CTPOP, VT, Tmp3);
+        Result = LegalizeOp(DAG.getNode(ISD::CTPOP, VT, Tmp3));
         break;
       }
       case ISD::CTTZ: {
-	// for now, we use: { return popcount(~x & (x - 1)); }
-        // but see also http://www.hackersdelight.org/HDcode/ntz.cc )
-	MVT::ValueType VT = Tmp1.getValueType();
-	Tmp2 = DAG.getConstant(~0ULL, VT);
-	Tmp3 = DAG.getNode(ISD::AND, VT, 
-                             DAG.getNode(ISD::XOR, VT, Tmp1, Tmp2),
-                             DAG.getNode(ISD::SUB, VT, Tmp1,
-			                           DAG.getConstant(1, VT)));
-	Result = DAG.getNode(ISD::CTPOP, VT, Tmp3);
+        // for now, we use: { return popcount(~x & (x - 1)); }
+        // but see also http://www.hackersdelight.org/HDcode/ntz.cc
+        MVT::ValueType VT = Tmp1.getValueType();
+        Tmp2 = DAG.getConstant(~0ULL, VT);
+        Tmp3 = DAG.getNode(ISD::AND, VT, 
+                           DAG.getNode(ISD::XOR, VT, Tmp1, Tmp2),
+                           DAG.getNode(ISD::SUB, VT, Tmp1,
+                                       DAG.getConstant(1, VT)));
+        Result = LegalizeOp(DAG.getNode(ISD::CTPOP, VT, Tmp3));
         break;
       }
       default:
