------- Comment #18 from dodji at gcc dot gnu dot org  2009-11-23 13:30 -------
Subject: Bug 14777

Author: dodji
Date: Mon Nov 23 13:29:50 2009
New Revision: 154443

URL: http://gcc.gnu.org/viewcvs?root=gcc&view=rev&rev=154443
Log:
Fix PR c++/14777

gcc/cp/ChangeLog:

        PR c++/14777
        * cp-tree.def <TEMPLATE_INFO>: Declare new kind of tree
        node.
        * cp-tree.h (struct tree_template_info,
        struct qualified_typedef_usage_s): New.
        (cp_tree_node_structure_enum): add TS_CP_TEMPLATE_INFO.
        (union lang_tree_node): Add template_info.
        (TI_TEMPLATE, TI_ARGS, TI_TYPEDEFS_NEEDING_ACCESS_CHECKING):
        Adjust.
        (build_template_info): Declare.
        (get_types_needing_access_check): Adjust return type.
        (add_typedef_to_current_template_for_access_check): Declare.
        * cp-objcp-common.c (cp_tree_size): Handle TEMPLATE_INFO.
        * semantics.c (add_typedef_to_current_template_for_access_check):
        Split from ...
        (check_accessibility_of_qualified_id): ... here.
        * decl.c (make_typename_type): Use it.
        * pt.c (build_template_info): Define.
        (check_explicit_specialization, find_parameter_packs_r,
        push_template_decl_real, lookup_template_class,
        for_each_template_parm_r, tsubst_decl, tsubst): Use
        build_template_info.
        (get_types_needing_access_check): Adjust return type.
        (append_type_to_template_for_access_check_1): Record the
        location of the usage point of the typedef. Adjust to TEMPLATE_INFO.
        (append_type_to_template_for_access_check): Add new location
        parameter. Pass it to append_type_to_template_for_access_check_1.
        Adjust to TEMPLATE_INFO.
        (perform_typedefs_access_check): Temporarily set input_location to
        the usage point of the typedef we are checking access for. Adjust
        to new TEMPLATE_INFO tree node.
        * tree.c (bind_template_template_parm): Use build_template_info.
        * call.c (add_template_candidate_real): Likewise.
        * decl.c (grokfndecl): Likewise.
        (cp_tree_node_structure): Handle TEMPLATE_INFO.

gcc/testsuite/ChangeLog:

        PR c++/14777
        * g++.dg/template/typedef13.C: Adjust.
        * g++.dg/template/typedef19.C: Adjust.
        * g++.dg/template/typedef20.C: Adjust.
        * g++.dg/template/typedef22.C: New test.

Added:
    trunk/gcc/testsuite/g++.dg/template/typedef22.C
Modified:
    trunk/gcc/cp/ChangeLog
    trunk/gcc/cp/call.c
    trunk/gcc/cp/cp-objcp-common.c
    trunk/gcc/cp/cp-tree.def
    trunk/gcc/cp/cp-tree.h
    trunk/gcc/cp/decl.c
    trunk/gcc/cp/pt.c
    trunk/gcc/cp/semantics.c
    trunk/gcc/cp/tree.c
    trunk/gcc/testsuite/ChangeLog
    trunk/gcc/testsuite/g++.dg/template/typedef13.C
    trunk/gcc/testsuite/g++.dg/template/typedef19.C
    trunk/gcc/testsuite/g++.dg/template/typedef20.C


-- 


http://gcc.gnu.org/bugzilla/show_bug.cgi?id=14777

Reply via email to