forked from OSchip/llvm-project
Fixes a code gen. bug for array delete operator call
int 32bit abi (pr5472 related). -This line, and those below, will be ignored-- M lib/CodeGen/CGCXXExpr.cpp llvm-svn: 88695
This commit is contained in:
parent
225fa59cac
commit
f75c1f7a73
|
@ -284,12 +284,15 @@ void CodeGenFunction::EmitCXXDeleteExpr(const CXXDeleteExpr *E) {
|
|||
llvm::Value *NumElementsPtr =
|
||||
Builder.CreateConstInBoundsGEP1_64(AllocatedObjectPtr,
|
||||
CookieOffset);
|
||||
NumElementsPtr = Builder.CreateBitCast(NumElementsPtr,
|
||||
ConvertType(SizeTy)->getPointerTo());
|
||||
|
||||
NumElementsPtr =
|
||||
Builder.CreateBitCast(NumElementsPtr,
|
||||
llvm::Type::getInt64Ty(VMContext)->getPointerTo());
|
||||
llvm::Value *NumElements =
|
||||
Builder.CreateLoad(NumElementsPtr);
|
||||
NumElements =
|
||||
Builder.CreateIntCast(NumElements,
|
||||
llvm::Type::getInt64Ty(VMContext), false,
|
||||
"count.tmp");
|
||||
assert (!Dtor->isVirtual() && "delete [] with virtual dtors NYI");
|
||||
EmitCXXAggrDestructorCall(Dtor, NumElements, Ptr);
|
||||
Ptr = AllocatedObjectPtr;
|
||||
|
|
Loading…
Reference in New Issue