r369999 - Don't lose the FoundDecl and template arguments for a DeclRefExpr in
Peter Collingbourne via cfe-commits
cfe-commits at lists.llvm.org
Wed Sep 25 11:48:28 PDT 2019
Hi Richard, it looks like this commit caused an assertion failure on the
following input:
$ cat test2.ii
# 2 "" 3
namespace a {
enum { b };
}
template <typename> void c() {
auto d = [](auto) {
using a::b;
b;
};
d(0);
}
void e() { c<int>; }
$ clang test2.ii
clang: ../clang/lib/Sema/SemaTemplateInstantiate.cpp:2985:
llvm::PointerUnion<Decl *, LocalInstantiationScope::DeclArgumentPack *>
*clang::LocalInstantiationScope::findInstantiationOf(const clang::Decl *):
Assertion `isa<LabelDecl>(D) && "declaration not instantiated in this
scope"' failed.
Can you please take a look?
Peter
On Mon, Aug 26, 2019 at 6:04 PM Richard Smith via cfe-commits <
cfe-commits at lists.llvm.org> wrote:
> Author: rsmith
> Date: Mon Aug 26 18:06:21 2019
> New Revision: 369999
>
> URL: http://llvm.org/viewvc/llvm-project?rev=369999&view=rev
> Log:
> Don't lose the FoundDecl and template arguments for a DeclRefExpr in
> TreeTransform.
>
> Modified:
> cfe/trunk/lib/Sema/TreeTransform.h
>
> Modified: cfe/trunk/lib/Sema/TreeTransform.h
> URL:
> http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/Sema/TreeTransform.h?rev=369999&r1=369998&r2=369999&view=diff
>
> ==============================================================================
> --- cfe/trunk/lib/Sema/TreeTransform.h (original)
> +++ cfe/trunk/lib/Sema/TreeTransform.h Mon Aug 26 18:06:21 2019
> @@ -2167,13 +2167,12 @@ public:
> ExprResult RebuildDeclRefExpr(NestedNameSpecifierLoc QualifierLoc,
> ValueDecl *VD,
> const DeclarationNameInfo &NameInfo,
> + NamedDecl *Found,
> TemplateArgumentListInfo *TemplateArgs) {
> CXXScopeSpec SS;
> SS.Adopt(QualifierLoc);
> -
> - // FIXME: loses template args.
> -
> - return getSema().BuildDeclarationNameExpr(SS, NameInfo, VD);
> + return getSema().BuildDeclarationNameExpr(SS, NameInfo, VD, Found,
> + TemplateArgs);
> }
>
> /// Build a new expression in parentheses.
> @@ -9204,6 +9203,14 @@ TreeTransform<Derived>::TransformDeclRef
> if (!ND)
> return ExprError();
>
> + NamedDecl *Found = ND;
> + if (E->getFoundDecl() != E->getDecl()) {
> + Found = cast_or_null<NamedDecl>(
> + getDerived().TransformDecl(E->getLocation(), E->getFoundDecl()));
> + if (!Found)
> + return ExprError();
> + }
> +
> DeclarationNameInfo NameInfo = E->getNameInfo();
> if (NameInfo.getName()) {
> NameInfo = getDerived().TransformDeclarationNameInfo(NameInfo);
> @@ -9236,7 +9243,7 @@ TreeTransform<Derived>::TransformDeclRef
> }
>
> return getDerived().RebuildDeclRefExpr(QualifierLoc, ND, NameInfo,
> - TemplateArgs);
> + Found, TemplateArgs);
> }
>
> template<typename Derived>
>
>
> _______________________________________________
> cfe-commits mailing list
> cfe-commits at lists.llvm.org
> https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits
>
--
--
Peter
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.llvm.org/pipermail/cfe-commits/attachments/20190925/ace3f156/attachment.html>
More information about the cfe-commits
mailing list