This is the mail archive of the
mailing list for the GCC project.
Re: c++/9820: [3.3/3.4 regression] ice in build_baselink (templates)
- From: Janis Johnson <janis187 at us dot ibm dot com>
- To: nobody at gcc dot gnu dot org
- Cc: gcc-prs at gcc dot gnu dot org,
- Date: 25 Feb 2003 20:46:00 -0000
- Subject: Re: c++/9820: [3.3/3.4 regression] ice in build_baselink (templates)
- Reply-to: Janis Johnson <janis187 at us dot ibm dot com>
The following reply was made to PR c++/9820; it has been noted by GNATS.
From: Janis Johnson <janis187 at us dot ibm dot com>
To: gcc-gnats at gcc dot gnu dot org, gcc-bugs at gcc dot gnu dot org, nobody at gcc dot gnu dot org,
gcc-prs at gcc dot gnu dot org, poschmid at lbl dot gov
Subject: Re: c++/9820: [3.3/3.4 regression] ice in build_baselink (templates)
Date: Tue, 25 Feb 2003 12:43:20 -0800
Between 2002-10-30 and 2002-12-24, the mainline and the 3.3
branch (after its creation) compiled the test case with no
error message, and then the error message came back, along
with the ICE.
The patch that caused the test case to compile successfully:
2002-10-30 Kriang Lerdsuwanakij <lerdsuwa at users dot sourceforge dot net>
Core issue 287, PR c++/7639
* cp-tree.h (lang_type_class): Add decl_list field.
(CLASSTYPE_DECL_LIST): New macro.
(maybe_add_class_template_decl_list): Add declaration.
* class.c (duplicate_tag_error): Initialize CLASSTYPE_DECL_LIST.
(unreverse_member_declarations): Reverse CLASSTYPE_DECL_LIST.
(maybe_add_class_template_decl_list): New function.
(add_implicitly_declared_members): Use it.
* decl.c (maybe_process_template_type_declaration): Likewise.
* friend.c (add_friend): Likewise.
* semantics.c (finish_member_declaration): Likewise.
(begin_class_definition): Initialize CLASSTYPE_DECL_LIST.
* pt.c (instantiate_class_template): Use CLASSTYPE_DECL_LIST
to process members and friends in the order of declaration.
The patch to mainline and 3.3-branch that brought back the
error message, plus the ICE:
2002-12-24 Nathan Sidwell <nathan at codesourcery dot com>
* cp-tree.h (resolve_scoped_fn_name): Prototype.
* call.c (resolve_scoped_fn_name): New function. Deal with
more template expansion. Broken out of ...
* parse.y (parse_finish_call_expr): ... here. Call it.
* decl2.c (build_expr_from_tree, CALL_EXPR): Use
resolve_scoped_fn_name and build_call_from_tree.
The regression hunt used the original test case, not the
very short one that Wolfgang provided.