]> granicus.if.org Git - clang/commitdiff
Address some comments Eli had.
authorAnders Carlsson <andersca@mac.com>
Sun, 16 Nov 2008 22:46:56 +0000 (22:46 +0000)
committerAnders Carlsson <andersca@mac.com>
Sun, 16 Nov 2008 22:46:56 +0000 (22:46 +0000)
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@59430 91177308-0d34-0410-b5e6-96231b3b80d8

lib/AST/ExprConstant.cpp

index 07f6c5476d05c05953759273dbd4186c2a99550d..ef8e2d4c1305362d3a7f7348f7b0d2afafe53f48 100644 (file)
@@ -407,6 +407,7 @@ public:
   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 @@ bool IntExprEvaluator::VisitBinaryOperator(const BinaryOperator *E) {
       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 @@ bool IntExprEvaluator::VisitBinaryOperator(const BinaryOperator *E) {
       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 @@ bool IntExprEvaluator::VisitBinaryOperator(const BinaryOperator *E) {
       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;