diff --git a/lib/AST/ExprConstant.cpp b/lib/AST/ExprConstant.cpp
index 07f6c54..ef8e2d4 100644
--- a/lib/AST/ExprConstant.cpp
+++ b/lib/AST/ExprConstant.cpp
@@ -407,6 +407,7 @@
   bool VisitSizeOfAlignOfExpr(const SizeOfAlignOfExpr *E);
 
   bool VisitCXXBoolLiteralExpr(const CXXBoolLiteralExpr *E) {
+    Result.zextOrTrunc(getIntTypeSizeInBits(E->getType()));
     Result = E->getValue();
     Result.setIsUnsigned(E->getType()->isUnsignedIntegerType());
     return true;
@@ -578,7 +579,9 @@
       return false;
     
     APFloat::cmpResult CR = LHS.compare(RHS);
-    
+
+    Result.zextOrTrunc(getIntTypeSizeInBits(E->getType()));
+
     switch (E->getOpcode()) {
     default:
       assert(0 && "Invalid binary operator!");
@@ -602,20 +605,12 @@
       break;
     }
     
-    Result.zextOrTrunc(getIntTypeSizeInBits(E->getType()));
     Result.setIsUnsigned(E->getType()->isUnsignedIntegerType());
     return true;
   }
   
   if (E->getOpcode() == BinaryOperator::Sub) {
-    if (LHSTy->isPointerType()) {
-      if (RHSTy->isIntegralType()) {
-        // pointer - int.
-        // FIXME: Implement.
-      }
-      
-      assert(RHSTy->isPointerType() && "RHS not pointer!");
-
+    if (LHSTy->isPointerType() && RHSTy->isPointerType()) {
       APValue LHSValue;
       if (!EvaluatePointer(E->getLHS(), LHSValue, Info))
         return false;
@@ -634,8 +629,8 @@
       uint64_t D = LHSValue.getLValueOffset() - RHSValue.getLValueOffset();
       D /= Info.Ctx.getTypeSize(ElementType) / 8;
       
-      Result = D;
       Result.zextOrTrunc(getIntTypeSizeInBits(E->getType()));
+      Result = D;
       Result.setIsUnsigned(E->getType()->isUnsignedIntegerType());
     
       return true;
