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