re PR c++/11493 (tree check ICE in error.c)
authorMark Mitchell <mark@codesourcery.com>
Mon, 14 Jul 2003 03:04:29 +0000 (03:04 +0000)
committerMark Mitchell <mmitchel@gcc.gnu.org>
Mon, 14 Jul 2003 03:04:29 +0000 (03:04 +0000)
commitb34459943bbfaf3f6fb32408bec5443b5bd007a9
tree3ddf8b782e57d44ab82415af48c1283130465744
parentf2ffecb11286fbe36b305bff8e8374214f6f9463
re PR c++/11493 (tree check ICE in error.c)

* cp-tree.h (cp_id_kind): New type.
(unqualified_name_lookup_error): Change prototype.
(unqualified_fn_lookup_error): New function.
(do_identifier): Remove.
(do_scoped_id): Likewise.
(tsubst_copy_and_build): Change prototype.
(reregister_specialization): New function.
(perform_koenig_lookup): Likewise.
(finish_id_expression): Likewise.
* call.c (build_method_call): Adjust call to
unqualified_name_lookup_error.
* decl.c (duplicate_decls): Use reregister_specialization.
* lex.c (is_global): Remove.
(unqualified_name_lookup_error): Return a value.
(do_identifier): Remove.
(do_scoped_id): Likewise.
(identifier_typedecl_value): Remove.
(unqualified_fn_lookup_error): New function.
* parser.c (cp_parser_id_kind): Remove.
(cp_parser_non_constant_id_expression): Remove.
(cp_parser_primary_expression): Use finish_id_expression.
(cp_parser_class_or_namespace_name): Use cp_id_kind, not
cp_parser_id_kind.
(cp_parser_postfix_expression): Use perform_koenig_lookup.
(cp_parser_template_argument): Use cp_id_kind.
(cp_parser_fold_non_dependent_expr): Adjust call to
tsubst_copy_and_build.
* pt.c (unregister_specialization): Rename to ...
(reregister_specialization): This.
(tsubst_friend_function): Use it.
(maybe_fold_nontype_arg): Adjust call to tsubst_copy_and_build.
(tsubst_qualified_id): Likewise.
(tsubst_expr): Likewise.
(tsubst_copy_and_build): Add function_p parameter.  Use
finish_id_expression.  Introduce RECUR macro.
(tsubst_non_call_postfix_expression): New function.
(regenerate_decl_from_template): Use reregister_specialization.
* semantics.c (perform_koenig_lookup): New function.
(finish_id_expression): Likewise.

PR c++/11493
PR c++/11495
* g++.dg/parse/template9.C: Likewise.
* g++.dg/template/crash4.C: New test.
* g++.dg/template/koenig1.C: Likewise.
* g++.old-deja/g++.benjamin/tem03.C: Adjust error markers.
* g++.old-deja/g++.benjamin/tem06.C: Declare "x".
* g++.old-deja/g++.jason/overload33.C: Use this-> when calling
functions.
* g++.old-deja/g++.jason/template36.C: Likewise.
* g++.old-deja/g++.mike/p1989.C: Likewise.
* g++.old-deja/g++.pt/lookup2.C: Use -fpermissive when compiling.
* g++.old-deja/g++.pt/ttp20.C: Use this->.
* g++.old-deja/g++.pt/ttp21.C: Use this->.
* g++.old-deja/g++.pt/typename13.C: Use -fpermissive when
compiling.
* g++.old-deja/g++.pt/union2.C: Use this->.

From-SVN: r69316
22 files changed:
gcc/cp/ChangeLog
gcc/cp/call.c
gcc/cp/cp-tree.h
gcc/cp/decl.c
gcc/cp/lex.c
gcc/cp/parser.c
gcc/cp/pt.c
gcc/cp/semantics.c
gcc/testsuite/ChangeLog
gcc/testsuite/g++.dg/parse/template9.C [new file with mode: 0644]
gcc/testsuite/g++.dg/template/crash4.C [new file with mode: 0644]
gcc/testsuite/g++.dg/template/koenig1.C [new file with mode: 0644]
gcc/testsuite/g++.old-deja/g++.benjamin/tem03.C
gcc/testsuite/g++.old-deja/g++.benjamin/tem06.C
gcc/testsuite/g++.old-deja/g++.jason/overload33.C
gcc/testsuite/g++.old-deja/g++.jason/template36.C
gcc/testsuite/g++.old-deja/g++.mike/p1989.C
gcc/testsuite/g++.old-deja/g++.pt/lookup2.C
gcc/testsuite/g++.old-deja/g++.pt/ttp20.C
gcc/testsuite/g++.old-deja/g++.pt/ttp21.C
gcc/testsuite/g++.old-deja/g++.pt/typename13.C
gcc/testsuite/g++.old-deja/g++.pt/union2.C