Revert my two IRgen fixes for "bool", then use a far simpler approach

based on ConvertTypeForMem. Thanks to John for pointing out the right
solution.

llvm-svn: 112838
This commit is contained in:
Douglas Gregor 2010-09-02 17:38:50 +00:00
parent 3335f48448
commit 04f3621860
2 changed files with 4 additions and 10 deletions

View File

@ -1018,9 +1018,8 @@ void CodeGenFunction::EmitCXXDeleteExpr(const CXXDeleteExpr *E) {
Ptr = Builder.CreateInBoundsGEP(Ptr, GEP.begin(), GEP.end(), "del.first");
}
assert(DeleteTy->isBooleanType() ||
(ConvertType(DeleteTy) ==
cast<llvm::PointerType>(Ptr->getType())->getElementType()));
assert(ConvertTypeForMem(DeleteTy) ==
cast<llvm::PointerType>(Ptr->getType())->getElementType());
if (E->isArrayForm()) {
EmitArrayDelete(*this, E->getOperatorDelete(), Ptr, DeleteTy);

View File

@ -305,13 +305,8 @@ llvm::Value *ItaniumCXXABI::EmitMemberDataPointerAddress(CodeGenFunction &CGF,
// Cast the address to the appropriate pointer type, adopting the
// address space of the base pointer.
// FIXME: We seem to be losing the "volatile" qualifier on the base pointer.
QualType PtrType = CGF.getContext().getPointerType(MPT->getPointeeType());
Qualifiers Qs = MPT->getPointeeType().getQualifiers();
if (AS)
Qs.addAddressSpace(AS);
PtrType = CGF.getContext().getQualifiedType(PtrType, Qs);
const llvm::Type *PType = CGF.ConvertType(PtrType);
const llvm::Type *PType
= CGF.ConvertTypeForMem(MPT->getPointeeType())->getPointerTo(AS);
return Builder.CreateBitCast(Addr, PType);
}