From: Jakub Jelinek Date: Fri, 22 Feb 2002 17:42:19 +0000 (+0100) Subject: re PR other/5746 (0220 cvs crashes using undeclared type) X-Git-Url: https://git.libre-soc.org/?a=commitdiff_plain;h=25c8b645eddd73483f4311b01e19e0196cf2c55b;p=gcc.git re PR other/5746 (0220 cvs crashes using undeclared type) PR other/5746 * semantics.c (finish_switch_cond): Don't call get_unwidened if error_mark_node. From-SVN: r49969 --- diff --git a/gcc/cp/ChangeLog b/gcc/cp/ChangeLog index 31fc320856e..bf470d1cbc0 100644 --- a/gcc/cp/ChangeLog +++ b/gcc/cp/ChangeLog @@ -1,3 +1,9 @@ +2002-02-22 Jakub Jelinek + + PR other/5746 + * semantics.c (finish_switch_cond): Don't call get_unwidened + if error_mark_node. + 2002-02-22 Nathan Sidwell PR c++/2645, DR 295 diff --git a/gcc/cp/semantics.c b/gcc/cp/semantics.c index c344a3016ef..e77e9299ec1 100644 --- a/gcc/cp/semantics.c +++ b/gcc/cp/semantics.c @@ -516,7 +516,6 @@ finish_switch_cond (cond, switch_stmt) tree orig_type = NULL; if (!processing_template_decl) { - tree type; tree index; /* Convert the condition to an integer or enumeration type. */ @@ -533,15 +532,17 @@ finish_switch_cond (cond, switch_stmt) cond = fold (build1 (CLEANUP_POINT_EXPR, TREE_TYPE (cond), cond)); } - type = TREE_TYPE (cond); - index = get_unwidened (cond, NULL_TREE); - /* We can't strip a conversion from a signed type to an unsigned, - because if we did, int_fits_type_p would do the wrong thing - when checking case values for being in range, - and it's too hard to do the right thing. */ - if (TREE_UNSIGNED (TREE_TYPE (cond)) - == TREE_UNSIGNED (TREE_TYPE (index))) - cond = index; + if (cond != error_mark_node) + { + index = get_unwidened (cond, NULL_TREE); + /* We can't strip a conversion from a signed type to an unsigned, + because if we did, int_fits_type_p would do the wrong thing + when checking case values for being in range, + and it's too hard to do the right thing. */ + if (TREE_UNSIGNED (TREE_TYPE (cond)) + == TREE_UNSIGNED (TREE_TYPE (index))) + cond = index; + } } FINISH_COND (cond, switch_stmt, SWITCH_COND (switch_stmt)); SWITCH_TYPE (switch_stmt) = orig_type;