r220060 - Rename TemplateArgument::getTypeForDecl to getParamTypeForDecl for clarity

Yaron Keren yaron.keren at gmail.com
Mon Oct 20 09:32:46 PDT 2014


Hi David,

Beyond renaming getTypeForDecl(), this revision also introduced
functionality changes in CGDebugInfo.cpp, specifically the

  if (InstanceMember) {

test was removed, leading to

  http://llvm.org/bugs/show_bug.cgi?id=21312

Was the condition removed by mistake?

Yaron



2014-10-17 21:00 GMT+03:00 David Blaikie <dblaikie at gmail.com>:

> Author: dblaikie
> Date: Fri Oct 17 13:00:12 2014
> New Revision: 220060
>
> URL: http://llvm.org/viewvc/llvm-project?rev=220060&view=rev
> Log:
> Rename TemplateArgument::getTypeForDecl to getParamTypeForDecl for clarity
>
> Code review feedback from Richard Smith on r219900.
>
> Modified:
>     cfe/trunk/include/clang/AST/TemplateBase.h
>     cfe/trunk/lib/AST/ASTContext.cpp
>     cfe/trunk/lib/AST/ASTImporter.cpp
>     cfe/trunk/lib/AST/ItaniumMangle.cpp
>     cfe/trunk/lib/AST/MicrosoftMangle.cpp
>     cfe/trunk/lib/CodeGen/CGDebugInfo.cpp
>     cfe/trunk/lib/Serialization/ASTWriter.cpp
>
> Modified: cfe/trunk/include/clang/AST/TemplateBase.h
> URL:
> http://llvm.org/viewvc/llvm-project/cfe/trunk/include/clang/AST/TemplateBase.h?rev=220060&r1=220059&r2=220060&view=diff
>
> ==============================================================================
> --- cfe/trunk/include/clang/AST/TemplateBase.h (original)
> +++ cfe/trunk/include/clang/AST/TemplateBase.h Fri Oct 17 13:00:12 2014
> @@ -249,7 +249,7 @@ public:
>      return DeclArg.D;
>    }
>
> -  QualType getTypeForDecl() const {
> +  QualType getParamTypeForDecl() const {
>      assert(getKind() == Declaration && "Unexpected kind");
>      return QualType::getFromOpaquePtr(DeclArg.QT);
>    }
>
> Modified: cfe/trunk/lib/AST/ASTContext.cpp
> URL:
> http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/AST/ASTContext.cpp?rev=220060&r1=220059&r2=220060&view=diff
>
> ==============================================================================
> --- cfe/trunk/lib/AST/ASTContext.cpp (original)
> +++ cfe/trunk/lib/AST/ASTContext.cpp Fri Oct 17 13:00:12 2014
> @@ -4099,7 +4099,7 @@ ASTContext::getCanonicalTemplateArgument
>
>      case TemplateArgument::Declaration: {
>        ValueDecl *D = cast<ValueDecl>(Arg.getAsDecl()->getCanonicalDecl());
> -      return TemplateArgument(D, Arg.getTypeForDecl());
> +      return TemplateArgument(D, Arg.getParamTypeForDecl());
>      }
>
>      case TemplateArgument::NullPtr:
>
> Modified: cfe/trunk/lib/AST/ASTImporter.cpp
> URL:
> http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/AST/ASTImporter.cpp?rev=220060&r1=220059&r2=220060&view=diff
>
> ==============================================================================
> --- cfe/trunk/lib/AST/ASTImporter.cpp (original)
> +++ cfe/trunk/lib/AST/ASTImporter.cpp Fri Oct 17 13:00:12 2014
> @@ -2094,7 +2094,7 @@ ASTNodeImporter::ImportTemplateArgument(
>    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();
>    }
>
>
> Modified: cfe/trunk/lib/AST/ItaniumMangle.cpp
> URL:
> http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/AST/ItaniumMangle.cpp?rev=220060&r1=220059&r2=220060&view=diff
>
> ==============================================================================
> --- cfe/trunk/lib/AST/ItaniumMangle.cpp (original)
> +++ cfe/trunk/lib/AST/ItaniumMangle.cpp Fri Oct 17 13:00:12 2014
> @@ -3403,7 +3403,7 @@ void CXXNameMangler::mangleTemplateArg(T
>      // 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);
>
> Modified: cfe/trunk/lib/AST/MicrosoftMangle.cpp
> URL:
> http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/AST/MicrosoftMangle.cpp?rev=220060&r1=220059&r2=220060&view=diff
>
> ==============================================================================
> --- cfe/trunk/lib/AST/MicrosoftMangle.cpp (original)
> +++ cfe/trunk/lib/AST/MicrosoftMangle.cpp Fri Oct 17 13:00:12 2014
> @@ -1139,7 +1139,7 @@ void MicrosoftCXXNameMangler::mangleTemp
>        else
>          mangle(FD, "$1?");
>      } else {
> -      mangle(ND, TA.getTypeForDecl()->isReferenceType() ? "$E?" : "$1?");
> +      mangle(ND, TA.getParamTypeForDecl()->isReferenceType() ? "$E?" :
> "$1?");
>      }
>      break;
>    }
>
> Modified: cfe/trunk/lib/CodeGen/CGDebugInfo.cpp
> URL:
> http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/CodeGen/CGDebugInfo.cpp?rev=220060&r1=220059&r2=220060&view=diff
>
> ==============================================================================
> --- cfe/trunk/lib/CodeGen/CGDebugInfo.cpp (original)
> +++ cfe/trunk/lib/CodeGen/CGDebugInfo.cpp Fri Oct 17 13:00:12 2014
> @@ -1255,32 +1255,29 @@ CollectTemplateParams(const TemplatePara
>      } 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,
>
> Modified: cfe/trunk/lib/Serialization/ASTWriter.cpp
> URL:
> http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/Serialization/ASTWriter.cpp?rev=220060&r1=220059&r2=220060&view=diff
>
> ==============================================================================
> --- cfe/trunk/lib/Serialization/ASTWriter.cpp (original)
> +++ cfe/trunk/lib/Serialization/ASTWriter.cpp Fri Oct 17 13:00:12 2014
> @@ -5372,7 +5372,7 @@ void ASTWriter::AddTemplateArgument(cons
>      break;
>    case TemplateArgument::Declaration:
>      AddDeclRef(Arg.getAsDecl(), Record);
> -    AddTypeRef(Arg.getTypeForDecl(), Record);
> +    AddTypeRef(Arg.getParamTypeForDecl(), Record);
>      break;
>    case TemplateArgument::NullPtr:
>      AddTypeRef(Arg.getNullPtrType(), Record);
>
>
> _______________________________________________
> cfe-commits mailing list
> cfe-commits at cs.uiuc.edu
> http://lists.cs.uiuc.edu/mailman/listinfo/cfe-commits
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.llvm.org/pipermail/cfe-commits/attachments/20141020/f0ef08b8/attachment.html>


More information about the cfe-commits mailing list