aboutsummaryrefslogtreecommitdiff
path: root/gcc
diff options
context:
space:
mode:
authorJim Wilson <wilson@cygnus.com>1999-11-13 01:04:19 +0000
committerJim Wilson <wilson@gcc.gnu.org>1999-11-12 17:04:19 -0800
commit2f985ca642d7ca70540cacde31d2b1f1fa0a63b3 (patch)
treefdb9427435335bcc832534f326323a5ec0347bdd /gcc
parent3fa4114a49f5fe202c20bca39b055d994fecdf8b (diff)
downloadgcc-2f985ca642d7ca70540cacde31d2b1f1fa0a63b3.zip
gcc-2f985ca642d7ca70540cacde31d2b1f1fa0a63b3.tar.gz
gcc-2f985ca642d7ca70540cacde31d2b1f1fa0a63b3.tar.bz2
Fix another gcc2 merge problem: fix switch statement ISO C conformancs bug
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
Diffstat (limited to 'gcc')
-rw-r--r--gcc/ChangeLog4
-rw-r--r--gcc/stmt.c14
2 files changed, 11 insertions, 7 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog
index a3e44db..7b10f81 100644
--- a/gcc/ChangeLog
+++ b/gcc/ChangeLog
@@ -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.
diff --git a/gcc/stmt.c b/gcc/stmt.c
index 17a2402..1f0d291 100644
--- a/gcc/stmt.c
+++ b/gcc/stmt.c
@@ -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);
}