]> granicus.if.org Git - clang/commitdiff
IRgen: Fix some CreateTempAlloca calls to use ConvertTypeForMem when that is
authorDaniel Dunbar <daniel@zuster.org>
Fri, 5 Feb 2010 18:56:49 +0000 (18:56 +0000)
committerDaniel Dunbar <daniel@zuster.org>
Fri, 5 Feb 2010 18:56:49 +0000 (18:56 +0000)
conceptually correct. Review appreciated (Chris, Eli, Anders).

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

lib/CodeGen/CGBuiltin.cpp
lib/CodeGen/CGExpr.cpp
lib/CodeGen/CGExprCXX.cpp
lib/CodeGen/CGObjC.cpp

index ba574bc6cb9f81e8d08c5cc522f9089320228ec4..4ba6a2484b63305af5179e2f4eb1f7ed9cacdc8e 100644 (file)
@@ -657,7 +657,8 @@ RValue CodeGenFunction::EmitBuiltinExpr(const FunctionDecl *FD,
 
   // Unknown builtin, for now just dump it out and return undef.
   if (hasAggregateLLVMType(E->getType()))
-    return RValue::getAggregate(CreateTempAlloca(ConvertType(E->getType())));
+    return RValue::getAggregate(CreateTempAlloca(ConvertTypeForMem(
+                                                   E->getType())));
   return RValue::get(llvm::UndefValue::get(ConvertType(E->getType())));
 }
 
index f16c600e9c75376a3892b68c6fb9fc1b56cca603..a16f0e78582c371acaba1e013076c2611d2f1cec 100644 (file)
@@ -1359,7 +1359,8 @@ EmitExtVectorElementExpr(const ExtVectorElementExpr *E) {
     llvm::Value *Vec = EmitScalarExpr(E->getBase());
     
     // Store the vector to memory (because LValue wants an address).
-    llvm::Value *VecMem =CreateTempAlloca(ConvertType(E->getBase()->getType()));
+    llvm::Value *VecMem = CreateTempAlloca(ConvertTypeForMem(
+                                             E->getBase()->getType()));
     Builder.CreateStore(Vec, VecMem);
     Base = LValue::MakeAddr(VecMem, Qualifiers());
   }
index ab54976e2874fbb50ea125df881e6c2c4b0248f6..2dbeaecf75055b33cbef8ae9cc5e44be6f14d597 100644 (file)
@@ -163,7 +163,7 @@ CodeGenFunction::EmitCXXMemberPointerCallExpr(const CXXMemberCallExpr *E,
 
   // Get the member function pointer.
   llvm::Value *MemFnPtr = 
-    CreateTempAlloca(ConvertType(MemFnExpr->getType()), "mem.fn");
+    CreateTempAlloca(ConvertTypeForMem(MemFnExpr->getType()), "mem.fn");
   EmitAggExpr(MemFnExpr, MemFnPtr, /*VolatileDest=*/false);
 
   // Emit the 'this' pointer.
index 896d2207ea4bfb23a4d11c19942862ab9aefb1ca..e03d7606c1991ff41d5ffa9c663ab69d6108b6f3 100644 (file)
@@ -450,8 +450,8 @@ void CodeGenFunction::EmitObjCForCollectionStmt(const ObjCForCollectionStmt &S){
 
   // Fast enumeration state.
   QualType StateTy = getContext().getObjCFastEnumerationStateType();
-  llvm::AllocaInst *StatePtr = CreateTempAlloca(ConvertType(StateTy),
-                                                "state.ptr");
+  llvm::AllocaInst *StatePtr = CreateTempAlloca(ConvertTypeForMem(
+                                                  StateTy), "state.ptr");
   StatePtr->setAlignment(getContext().getTypeAlign(StateTy) >> 3);
   EmitMemSetToZero(StatePtr, StateTy);
 
@@ -470,7 +470,8 @@ void CodeGenFunction::EmitObjCForCollectionStmt(const ObjCForCollectionStmt &S){
     getContext().getConstantArrayType(getContext().getObjCIdType(),
                                       llvm::APInt(32, NumItems),
                                       ArrayType::Normal, 0);
-  llvm::Value *ItemsPtr = CreateTempAlloca(ConvertType(ItemsTy), "items.ptr");
+  llvm::Value *ItemsPtr = CreateTempAlloca(ConvertTypeForMem(
+                                             ItemsTy), "items.ptr");
 
   llvm::Value *Collection = EmitScalarExpr(S.getCollection());