OSDN Git Service

PR other/5746
authorjakub <jakub@138bc75d-0d04-0410-961f-82ee72b054a4>
Fri, 22 Feb 2002 17:42:19 +0000 (17:42 +0000)
committerjakub <jakub@138bc75d-0d04-0410-961f-82ee72b054a4>
Fri, 22 Feb 2002 17:42:19 +0000 (17:42 +0000)
* semantics.c (finish_switch_cond): Don't call get_unwidened
if error_mark_node.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@49969 138bc75d-0d04-0410-961f-82ee72b054a4

gcc/cp/ChangeLog
gcc/cp/semantics.c

index 31fc320..bf470d1 100644 (file)
@@ -1,3 +1,9 @@
+2002-02-22  Jakub Jelinek  <jakub@redhat.com>
+
+       PR other/5746
+       * semantics.c (finish_switch_cond): Don't call get_unwidened
+       if error_mark_node.
+
 2002-02-22  Nathan Sidwell  <nathan@codesourcery.com>
 
        PR c++/2645, DR 295
index c344a30..e77e929 100644 (file)
@@ -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;