]> granicus.if.org Git - clang/commitdiff
Revert my two IRgen fixes for "bool", then use a far simpler approach
authorDouglas Gregor <dgregor@apple.com>
Thu, 2 Sep 2010 17:38:50 +0000 (17:38 +0000)
committerDouglas Gregor <dgregor@apple.com>
Thu, 2 Sep 2010 17:38:50 +0000 (17:38 +0000)
based on ConvertTypeForMem. Thanks to John for pointing out the right
solution.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@112838 91177308-0d34-0410-b5e6-96231b3b80d8

lib/CodeGen/CGExprCXX.cpp
lib/CodeGen/ItaniumCXXABI.cpp

index e0c8280e6b737c0a676b0326c686a1bc955f314c..79e3b220ef97d9fdaa384cc80a8250a413166ba3 100644 (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);
index 85b52c632204ff89f7e61893f0cd8dfce104fecf..eefc530ccf180f040613ad2fc515c8cfcddf3c24 100644 (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);
 }