]> granicus.if.org Git - clang/commitdiff
Replace getPointeeType()->isFunctionType with isMemberDataPointerType
authorDavid Majnemer <david.majnemer@gmail.com>
Fri, 24 Apr 2015 01:25:08 +0000 (01:25 +0000)
committerDavid Majnemer <david.majnemer@gmail.com>
Fri, 24 Apr 2015 01:25:08 +0000 (01:25 +0000)
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@235682 91177308-0d34-0410-b5e6-96231b3b80d8

lib/AST/ItaniumCXXABI.cpp
lib/CodeGen/CGDebugInfo.cpp
lib/CodeGen/CGExprConstant.cpp
lib/CodeGen/ItaniumCXXABI.cpp
lib/Sema/SemaCast.cpp

index 74207820b3a8898a082d167c3cc54d44129e4803..7503cbfc9805e6fa33730a4376bead96219160f5 100644 (file)
@@ -106,7 +106,7 @@ public:
     TargetInfo::IntType PtrDiff = Target.getPtrDiffType(0);
     uint64_t Width = Target.getTypeWidth(PtrDiff);
     unsigned Align = Target.getTypeAlign(PtrDiff);
-    if (MPT->getPointeeType()->isFunctionType())
+    if (MPT->isMemberFunctionPointer())
       Width = 2 * Width;
     return std::make_pair(Width, Align);
   }
index d1920c1b1370ee9de6085ca142de04a46444a251..fd45f620dcd44951a81b143851138dbe3b968500 100644 (file)
@@ -1879,7 +1879,7 @@ llvm::MDType *CGDebugInfo::CreateType(const RValueReferenceType *Ty,
 llvm::MDType *CGDebugInfo::CreateType(const MemberPointerType *Ty,
                                       llvm::MDFile *U) {
   llvm::MDType *ClassType = getOrCreateType(QualType(Ty->getClass(), 0), U);
-  if (!Ty->getPointeeType()->isFunctionType())
+  if (Ty->isMemberDataPointerType())
     return DBuilder.createMemberPointerType(
       getOrCreateType(Ty->getPointeeType(), U), ClassType,
       CGM.getContext().getTypeSize(Ty));
index b1cf99c4ee5a159cc25ac4f0bc6196380905ca42..f94213ac940394fcdcc007af57d91a71f657c684 100644 (file)
@@ -1421,8 +1421,7 @@ llvm::Constant *CodeGenModule::EmitNullConstant(QualType T) {
     return ::EmitNullConstant(*this, RD, /*complete object*/ true);
   }
 
-  assert(T->isMemberPointerType() && "Should only see member pointers here!");
-  assert(!T->getAs<MemberPointerType>()->getPointeeType()->isFunctionType() &&
+  assert(T->isMemberDataPointerType() &&
          "Should only see pointers to data members here!");
 
   return getCXXABI().EmitNullMemberPointer(T->castAs<MemberPointerType>());
index eb7ab1dc7ae41539a73e06f6a6cd8be065ea1ff8..e4e369572f51d45c72d70ea00561546d3baf40bc 100644 (file)
@@ -865,7 +865,7 @@ bool ItaniumCXXABI::classifyReturnType(CGFunctionInfo &FI) const {
 /// The Itanium ABI requires non-zero initialization only for data
 /// member pointers, for which '0' is a valid offset.
 bool ItaniumCXXABI::isZeroInitializable(const MemberPointerType *MPT) {
-  return MPT->getPointeeType()->isFunctionType();
+  return MPT->isMemberFunctionPointer();
 }
 
 /// The Itanium ABI always places an offset to the complete object
index d28a24453e2c1421e56a1b62f6693021c19fed58..091e77936c1e22eff0387a37aaeba612223db0f8 100644 (file)
@@ -1817,8 +1817,8 @@ static TryCastResult TryReinterpretCast(Sema &Self, ExprResult &SrcExpr,
     //   can be explicitly converted to an rvalue of type "pointer to member
     //   of Y of type T2" if T1 and T2 are both function types or both object
     //   types.
-    if (DestMemPtr->getPointeeType()->isFunctionType() !=
-        SrcMemPtr->getPointeeType()->isFunctionType())
+    if (DestMemPtr->isMemberFunctionPointer() !=
+        SrcMemPtr->isMemberFunctionPointer())
       return TC_NotApplicable;
 
     // C++ 5.2.10p2: The reinterpret_cast operator shall not cast away