Rename TemplateArgument::getTypeForDecl to getParamTypeForDecl for clarity
authorDavid Blaikie <dblaikie@gmail.com>
Fri, 17 Oct 2014 18:00:12 +0000 (18:00 +0000)
committerDavid Blaikie <dblaikie@gmail.com>
Fri, 17 Oct 2014 18:00:12 +0000 (18:00 +0000)
Code review feedback from Richard Smith on r219900.

llvm-svn: 220060

clang/include/clang/AST/TemplateBase.h
clang/lib/AST/ASTContext.cpp
clang/lib/AST/ASTImporter.cpp
clang/lib/AST/ItaniumMangle.cpp
clang/lib/AST/MicrosoftMangle.cpp
clang/lib/CodeGen/CGDebugInfo.cpp
clang/lib/Serialization/ASTWriter.cpp

index b50525c8aeb340013910a7df1476a59a52b2f85f..f3c6440f4076a1a2fc3fcceea28e01d7bd6cd9f6 100644 (file)
@@ -249,7 +249,7 @@ public:
     return DeclArg.D;
   }
 
-  QualType getTypeForDecl() const {
+  QualType getParamTypeForDecl() const {
     assert(getKind() == Declaration && "Unexpected kind");
     return QualType::getFromOpaquePtr(DeclArg.QT);
   }
index 8f8ae8da0db2d796d4e125458ed71b147ab26797..ba581396d9878f722b6e540166fdd4c44187a1db 100644 (file)
@@ -4099,7 +4099,7 @@ ASTContext::getCanonicalTemplateArgument(const TemplateArgument &Arg) const {
 
     case TemplateArgument::Declaration: {
       ValueDecl *D = cast<ValueDecl>(Arg.getAsDecl()->getCanonicalDecl());
-      return TemplateArgument(D, Arg.getTypeForDecl());
+      return TemplateArgument(D, Arg.getParamTypeForDecl());
     }
 
     case TemplateArgument::NullPtr:
index 6b16cacbc9422400e874eb3429d8fbf1c8a9bfca..02864a5d4d9fed2d17f23b42ee8aca811a78ddeb 100644 (file)
@@ -2094,7 +2094,7 @@ ASTNodeImporter::ImportTemplateArgument(const TemplateArgument &From) {
   case TemplateArgument::Declaration: {
     ValueDecl *FromD = From.getAsDecl();
     if (ValueDecl *To = cast_or_null<ValueDecl>(Importer.Import(FromD)))
-      return TemplateArgument(To, From.getTypeForDecl());
+      return TemplateArgument(To, From.getParamTypeForDecl());
     return TemplateArgument();
   }
 
index fe5a50271d35f2d92ee137bc4c4f82c2e0929d7a..5965ef0515826e199ce14ab2bb1858701ee7348a 100644 (file)
@@ -3403,7 +3403,7 @@ void CXXNameMangler::mangleTemplateArg(TemplateArgument A) {
     // and pointer-to-function expressions are represented as a declaration not
     // an expression. We compensate for it here to produce the correct mangling.
     ValueDecl *D = A.getAsDecl();
-    bool compensateMangling = !A.getTypeForDecl()->isReferenceType();
+    bool compensateMangling = !A.getParamTypeForDecl()->isReferenceType();
     if (compensateMangling) {
       Out << 'X';
       mangleOperatorName(OO_Amp, 1);
index 54ac2b6352ad8d8657082cfd2fb76b100daca0c5..59cf4d091bf32f2f21a82d49396590dbb316eb55 100644 (file)
@@ -1139,7 +1139,7 @@ void MicrosoftCXXNameMangler::mangleTemplateArg(const TemplateDecl *TD,
       else
         mangle(FD, "$1?");
     } else {
-      mangle(ND, TA.getTypeForDecl()->isReferenceType() ? "$E?" : "$1?");
+      mangle(ND, TA.getParamTypeForDecl()->isReferenceType() ? "$E?" : "$1?");
     }
     break;
   }
index 0a5c40ed1acc26362d06cf9e4182a84436021f0e..ac51a55d15f744b2376699b92af494857414fefd 100644 (file)
@@ -1255,32 +1255,29 @@ CollectTemplateParams(const TemplateParameterList *TPList,
     } break;
     case TemplateArgument::Declaration: {
       const ValueDecl *D = TA.getAsDecl();
-      bool InstanceMember = D->isCXXInstanceMember();
-      QualType T = TA.getTypeForDecl();
+      QualType T = TA.getParamTypeForDecl();
       llvm::DIType TTy = getOrCreateType(T, Unit);
       llvm::Value *V = nullptr;
       // Variable pointer template parameters have a value that is the address
       // of the variable.
-      if (const VarDecl *VD = dyn_cast<VarDecl>(D))
+      if (const auto *VD = dyn_cast<VarDecl>(D))
         V = CGM.GetAddrOfGlobalVar(VD);
       // Member function pointers have special support for building them, though
       // this is currently unsupported in LLVM CodeGen.
-      if (InstanceMember) {
-        if (const CXXMethodDecl *method = dyn_cast<CXXMethodDecl>(D))
+      else if (const auto *method = dyn_cast<CXXMethodDecl>(D))
           V = CGM.getCXXABI().EmitMemberPointer(method);
-      } else if (const FunctionDecl *FD = dyn_cast<FunctionDecl>(D))
+      else if (const auto *FD = dyn_cast<FunctionDecl>(D))
         V = CGM.GetAddrOfFunction(FD);
       // Member data pointers have special handling too to compute the fixed
       // offset within the object.
-      if (isa<FieldDecl>(D) || isa<IndirectFieldDecl>(D)) {
+      else if (const auto *MPT = dyn_cast<MemberPointerType>(T.getTypePtr())) {
         // These five lines (& possibly the above member function pointer
         // handling) might be able to be refactored to use similar code in
         // CodeGenModule::getMemberPointerConstant
         uint64_t fieldOffset = CGM.getContext().getFieldOffset(D);
         CharUnits chars =
             CGM.getContext().toCharUnitsFromBits((int64_t) fieldOffset);
-        V = CGM.getCXXABI().EmitMemberDataPointer(
-            cast<MemberPointerType>(T.getTypePtr()), chars);
+        V = CGM.getCXXABI().EmitMemberDataPointer(MPT, chars);
       }
       llvm::DITemplateValueParameter TVP =
           DBuilder.createTemplateValueParameter(TheCU, Name, TTy,
index c1df96446071c4ff7c98456b0bee9742f73be897..5f8f5961be3342dcae8e3d79821ed6088eeca68d 100644 (file)
@@ -5372,7 +5372,7 @@ void ASTWriter::AddTemplateArgument(const TemplateArgument &Arg,
     break;
   case TemplateArgument::Declaration:
     AddDeclRef(Arg.getAsDecl(), Record);
-    AddTypeRef(Arg.getTypeForDecl(), Record);
+    AddTypeRef(Arg.getParamTypeForDecl(), Record);
     break;
   case TemplateArgument::NullPtr:
     AddTypeRef(Arg.getNullPtrType(), Record);