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:
parent
3335f48448
commit
04f3621860
|
@ -1018,9 +1018,8 @@ void CodeGenFunction::EmitCXXDeleteExpr(const CXXDeleteExpr *E) {
|
||||||
Ptr = Builder.CreateInBoundsGEP(Ptr, GEP.begin(), GEP.end(), "del.first");
|
Ptr = Builder.CreateInBoundsGEP(Ptr, GEP.begin(), GEP.end(), "del.first");
|
||||||
}
|
}
|
||||||
|
|
||||||
assert(DeleteTy->isBooleanType() ||
|
assert(ConvertTypeForMem(DeleteTy) ==
|
||||||
(ConvertType(DeleteTy) ==
|
cast<llvm::PointerType>(Ptr->getType())->getElementType());
|
||||||
cast<llvm::PointerType>(Ptr->getType())->getElementType()));
|
|
||||||
|
|
||||||
if (E->isArrayForm()) {
|
if (E->isArrayForm()) {
|
||||||
EmitArrayDelete(*this, E->getOperatorDelete(), Ptr, DeleteTy);
|
EmitArrayDelete(*this, E->getOperatorDelete(), Ptr, DeleteTy);
|
||||||
|
|
|
@ -305,13 +305,8 @@ llvm::Value *ItaniumCXXABI::EmitMemberDataPointerAddress(CodeGenFunction &CGF,
|
||||||
|
|
||||||
// Cast the address to the appropriate pointer type, adopting the
|
// Cast the address to the appropriate pointer type, adopting the
|
||||||
// address space of the base pointer.
|
// address space of the base pointer.
|
||||||
// FIXME: We seem to be losing the "volatile" qualifier on the base pointer.
|
const llvm::Type *PType
|
||||||
QualType PtrType = CGF.getContext().getPointerType(MPT->getPointeeType());
|
= CGF.ConvertTypeForMem(MPT->getPointeeType())->getPointerTo(AS);
|
||||||
Qualifiers Qs = MPT->getPointeeType().getQualifiers();
|
|
||||||
if (AS)
|
|
||||||
Qs.addAddressSpace(AS);
|
|
||||||
PtrType = CGF.getContext().getQualifiedType(PtrType, Qs);
|
|
||||||
const llvm::Type *PType = CGF.ConvertType(PtrType);
|
|
||||||
return Builder.CreateBitCast(Addr, PType);
|
return Builder.CreateBitCast(Addr, PType);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue