diff options
author | Jim Wilson <wilson@cygnus.com> | 1999-11-13 01:04:19 +0000 |
---|---|---|
committer | Jim Wilson <wilson@gcc.gnu.org> | 1999-11-12 17:04:19 -0800 |
commit | 2f985ca642d7ca70540cacde31d2b1f1fa0a63b3 (patch) | |
tree | fdb9427435335bcc832534f326323a5ec0347bdd /gcc | |
parent | 3fa4114a49f5fe202c20bca39b055d994fecdf8b (diff) | |
download | gcc-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/ChangeLog | 4 | ||||
-rw-r--r-- | gcc/stmt.c | 14 |
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. @@ -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); } |