зеркало из https://github.com/microsoft/clang-1.git
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
This commit is contained in:
Родитель
d4b25cbde1
Коммит
cc09c022be
|
@ -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 {
|
||||
|
|
|
@ -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
|
||||
}
|
||||
|
|
Загрузка…
Ссылка в новой задаче