]> granicus.if.org Git - clang/commitdiff
A few corrections to the expr constant work. Not enabled at the
authorEli Friedman <eli.friedman@gmail.com>
Mon, 17 Nov 2008 03:57:28 +0000 (03:57 +0000)
committerEli Friedman <eli.friedman@gmail.com>
Mon, 17 Nov 2008 03:57:28 +0000 (03:57 +0000)
moment.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@59435 91177308-0d34-0410-b5e6-96231b3b80d8

lib/CodeGen/CGExprConstant.cpp

index bfe43c3c87c406084decebb36f0b56a54571fcd9..4ae7d907720bc7bed90ff5bd284d377f0994b1bc 100644 (file)
@@ -859,7 +859,7 @@ llvm::Constant *CodeGenModule::EmitConstantExpr(const Expr *E,
 
         const llvm::Type *Type = 
           llvm::PointerType::getUnqual(llvm::Type::Int8Ty);
-        const llvm::Type *DestType = C->getType();
+        const llvm::Type *DestType = getTypes().ConvertTypeForMem(E->getType());
         
         // FIXME: It's a little ugly that we need to cast to a pointer,
         // apply the GEP and then cast back.
@@ -872,7 +872,7 @@ llvm::Constant *CodeGenModule::EmitConstantExpr(const Expr *E,
       return llvm::ConstantExpr::getIntToPtr(Offset, 
                                              getTypes().ConvertType(type));
     }
-    case APValue::Int:
+    case APValue::Int: {
       llvm::Constant *C = llvm::ConstantInt::get(V.getInt());
       
       if (C->getType() == llvm::Type::Int1Ty) {
@@ -880,6 +880,7 @@ llvm::Constant *CodeGenModule::EmitConstantExpr(const Expr *E,
         C = llvm::ConstantExpr::getZExt(C, BoolTy);
       }
       return C;
+    }
     case APValue::Float:
       return llvm::ConstantFP::get(V.getFloat());
     case APValue::ComplexFloat: {