From 08476342abb92b3fa8960a9c7b2036a596791af2 Mon Sep 17 00:00:00 2001 From: Nathan Sidwell Date: Wed, 2 Jul 2003 09:41:52 +0000 Subject: re PR c++/10219 (ICE in maybe_adjust_types_for_deduction on invalid code) cp: PR c++/10219 * pt.c (type_unification_real): Don't unify exprs of error type. * tree.c (error_type): Don't die on error_type. testsuite: PR c++/10219 * g++.dg/template/error1.C: New. From-SVN: r68825 --- gcc/cp/ChangeLog | 4 ++++ gcc/cp/pt.c | 2 ++ gcc/cp/tree.c | 3 +++ 3 files changed, 9 insertions(+) (limited to 'gcc/cp') diff --git a/gcc/cp/ChangeLog b/gcc/cp/ChangeLog index c8bb893..9708304 100644 --- a/gcc/cp/ChangeLog +++ b/gcc/cp/ChangeLog @@ -1,5 +1,9 @@ 2003-07-02 Nathan Sidwell + PR c++/10219 + * pt.c (type_unification_real): Don't unify exprs of error type. + * tree.c (error_type): Don't die on error_type. + PR c++/9779 * decl2.c (arg_assoc_class): Don't die on NULL type. * typeck.c (type_unknown_p): Don't die on untyped expressions. diff --git a/gcc/cp/pt.c b/gcc/cp/pt.c index 43fc5ab..607bdd1 100644 --- a/gcc/cp/pt.c +++ b/gcc/cp/pt.c @@ -8830,6 +8830,8 @@ type_unification_real (tree tparms, continue; } arg = TREE_TYPE (arg); + if (arg == error_mark_node) + return 1; } { diff --git a/gcc/cp/tree.c b/gcc/cp/tree.c index 385afca..6c6d9b9 100644 --- a/gcc/cp/tree.c +++ b/gcc/cp/tree.c @@ -1747,8 +1747,11 @@ tree error_type (tree arg) { tree type = TREE_TYPE (arg); + if (TREE_CODE (type) == ARRAY_TYPE) ; + else if (TREE_CODE (type) == ERROR_MARK) + ; else if (real_lvalue_p (arg)) type = build_reference_type (lvalue_type (arg)); else if (IS_AGGR_TYPE (type)) -- cgit v1.1