Fix another gcc2 merge problem: fix switch statement ISO C conformancs bug
authorJim Wilson <wilson@cygnus.com>
Sat, 13 Nov 1999 01:04:19 +0000 (01:04 +0000)
committerJim Wilson <wilson@gcc.gnu.org>
Sat, 13 Nov 1999 01:04:19 +0000 (17:04 -0800)
Fix another gcc2 merge problem: fix switch statement ISO C conformancs bug
* stmt.c (pushcase, pushcase_range): Partially revert Oct 28 change.

From-SVN: r30515

gcc/ChangeLog
gcc/stmt.c

index a3e44dba78e5d2c5aceadb659f53078527bcd5d5..7b10f811f1746e6ec385019b1e03c4d336736423 100644 (file)
@@ -1,3 +1,7 @@
+Fri Nov 12 16:26:25 1999  Jim Wilson  <wilson@cygnus.com>
+
+       * stmt.c (pushcase, pushcase_range): Partially revert Oct 28 change.
+
 Fri Nov 12 12:43:49 1999  Richard Henderson  <rth@cygnus.com>
 
        * unroll.c (unroll_loop): Make temp an unsigned HOST_WIDE_INT.
index 17a2402c37cb88975d80e5d64d213165e256b19a..1f0d29102639eb04d1be81115b58a6d63c3f64ed 100644 (file)
@@ -4535,6 +4535,10 @@ pushcase (value, converter, label, duplicate)
   if (index_type == error_mark_node)
     return 0;
 
+  /* Convert VALUE to the type in which the comparisons are nominally done.  */
+  if (value != 0)
+    value = (*converter) (nominal_type, value);
+
   check_seenlabel ();
 
   /* Fail if this value is out of range for the actual type of the index
@@ -4544,10 +4548,6 @@ pushcase (value, converter, label, duplicate)
          || ! int_fits_type_p (value, index_type)))
     return 3;
 
-  /* Convert VALUE to the type in which the comparisons are nominally done.  */
-  if (value != 0)
-    value = (*converter) (nominal_type, value);
-
   /* Fail if this is a duplicate or overlaps another entry.  */
   if (value == 0)
     {
@@ -4619,6 +4619,9 @@ pushcase_range (value1, value2, converter, label, duplicate)
   if (value2 == 0)
     value2 = TYPE_MAX_VALUE (nominal_type);
 
+  value1 = (*converter) (nominal_type, value1);
+  value2 = (*converter) (nominal_type, value2);
+
   /* Fail if these values are out of range.  */
   if (TREE_CONSTANT_OVERFLOW (value1)
       || ! int_fits_type_p (value1, index_type))
@@ -4628,9 +4631,6 @@ pushcase_range (value1, value2, converter, label, duplicate)
       || ! int_fits_type_p (value2, index_type))
     return 3;
 
-  value1 = (*converter) (nominal_type, value1);
-  value2 = (*converter) (nominal_type, value2);
-
   return add_case_node (value1, value2, label, duplicate);
 }