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

--- Comment #5 from Alexandre Oliva <aoliva at gcc dot gnu.org> ---
Author: aoliva
Date: Wed Feb 13 19:08:52 2019
New Revision: 268851

URL: https://gcc.gnu.org/viewcvs?rev=268851&root=gcc&view=rev
Log:
[PR86379] do not use TREE_TYPE for USING_DECL_SCOPE

It's too risky to reuse the type field for USING_DECL_SCOPE.
Language-independent parts of the compiler, such as location and
non-lvalue wrappers, happily take the TREE_TYPE of a USING_DECL as if
it was a type rather than an unrelated scope.

For better or worse, USING_DECLs use the non-common struct so we can
use the otherwise unused result field.  Adjust fallout, from uses of
TREE_TYPE that were supposed to be USING_DECL_SCOPE, to other
accidental uses of TREE_TYPE of a USING_DECL.


for  gcc/cp/ChangeLog

        PR c++/86379
        * cp-tree.h (USING_DECL_SCOPE): Use result rather than type.
        * name-lookup.c (strip_using_decl): Use USING_DECL_SCOPE.
        * search.c (protected_accessible_p): Follow USING_DECL_DECLS.
        (shared_member_p): Likewise.
        (lookup_member): Likewise.
        * decl.c (grok_special_member_properties): Skip USING_DECLs.
        * semantics.c (finish_omp_declare_simd_methods): Likewise.
        (finish_qualified_id_expr): Do not call shared_member_p with
        a dependent expr.

for  gcc/testsuite/ChangeLog

        PR c++/86379
        * g++.dg/cpp0x/pr86379.C: New.

Added:
    trunk/gcc/testsuite/g++.dg/cpp0x/pr86379.C
Modified:
    trunk/gcc/cp/ChangeLog
    trunk/gcc/cp/cp-tree.h
    trunk/gcc/cp/decl.c
    trunk/gcc/cp/name-lookup.c
    trunk/gcc/cp/search.c
    trunk/gcc/cp/semantics.c
    trunk/gcc/testsuite/ChangeLog

Reply via email to