https://gcc.gnu.org/bugzilla/show_bug.cgi?id=99116

--- Comment #2 from CVS Commits <cvs-commit at gcc dot gnu.org> ---
The master branch has been updated by Nathan Sidwell <nat...@gcc.gnu.org>:

https://gcc.gnu.org/g:24bf79f1798ad1d64812709001d2d11cd3e6849f

commit r11-7266-g24bf79f1798ad1d64812709001d2d11cd3e6849f
Author: Nathan Sidwell <nat...@acm.org>
Date:   Wed Feb 17 05:33:45 2021 -0800

    c++: More set_identifier_type_value fixing [PR 99116]

    My recent change looked under template_parms in two places, but that
    was covering up a separate problem.  We were attempting to set the
    identifier_type_value of a template_parm into the template_parm
    scope.  The peeking stopped us doing that, but confused poplevel,
    leaving an identifier value lying around.  This fixes the underlying
    problem in do_pushtag -- we only need to set the identifier_type_value
    directly when we're in a template_parm scope (a later pushdecl will
    push the actual template_decl).  for non-class non-template-parm
    bindings do_pushdecl already ends up manipulating
    identifier_type_value correctly.

            PR c++/99116
            gcc/cp/
            * name-lookup.c (do_pushdecl): Don't peek under template_parm
            bindings here ...
            (set_identifier_type_value_with_scope): ... or here.
            (do_pushtag): Only set_identifier_type_value_with_scope at
            non-class template parm scope, and use parent scope.
            gcc/testsuite/
            * g++.dg/lookup/pr99116-1.C: New.
            * g++.dg/lookup/pr99116-2.C: New.

Reply via email to