From cc09c022bebcabd5f222d410bb6695af0ea93257 Mon Sep 17 00:00:00 2001 From: Douglas Gregor Date: Thu, 2 Sep 2010 23:24:14 +0000 Subject: [PATCH] Fix a few more ConvertTypes that should be ConvertTypeForMems, fixing two regressions in Boost.Config. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@112908 91177308-0d34-0410-b5e6-96231b3b80d8 --- lib/CodeGen/CGExprCXX.cpp | 5 +++-- test/CodeGenCXX/new.cpp | 4 ++++ 2 files changed, 7 insertions(+), 2 deletions(-) diff --git a/lib/CodeGen/CGExprCXX.cpp b/lib/CodeGen/CGExprCXX.cpp index 79e3b220ef..a5c1691307 100644 --- a/lib/CodeGen/CGExprCXX.cpp +++ b/lib/CodeGen/CGExprCXX.cpp @@ -754,7 +754,8 @@ llvm::Value *CodeGenFunction::EmitCXXNewExpr(const CXXNewExpr *E) { AllocType); } - const llvm::Type *ElementPtrTy = ConvertType(AllocType)->getPointerTo(AS); + const llvm::Type *ElementPtrTy + = ConvertTypeForMem(AllocType)->getPointerTo(AS); NewPtr = Builder.CreateBitCast(NewPtr, ElementPtrTy); if (E->isArray()) { EmitNewInitializer(*this, E, NewPtr, NumElements, AllocSizeWithoutCookie); @@ -762,7 +763,7 @@ llvm::Value *CodeGenFunction::EmitCXXNewExpr(const CXXNewExpr *E) { // NewPtr is a pointer to the base element type. If we're // allocating an array of arrays, we'll need to cast back to the // array pointer type. - const llvm::Type *ResultTy = ConvertType(E->getType()); + const llvm::Type *ResultTy = ConvertTypeForMem(E->getType()); if (NewPtr->getType() != ResultTy) NewPtr = Builder.CreateBitCast(NewPtr, ResultTy); } else { diff --git a/test/CodeGenCXX/new.cpp b/test/CodeGenCXX/new.cpp index d52ebbe450..10a6f7f489 100644 --- a/test/CodeGenCXX/new.cpp +++ b/test/CodeGenCXX/new.cpp @@ -158,4 +158,8 @@ void f() { // CHECK: call void @_ZN5AllocD1Ev( // CHECK: call void @_ZN5AllocdaEPv(i8* delete[] new Alloc[10][20]; + // CHECK: call noalias i8* @_Znwm + // CHECK: call void @_ZdlPv(i8* + delete new bool; + // CHECK: ret void }