aboutsummaryrefslogtreecommitdiff
path: root/gcc
diff options
context:
space:
mode:
authorAndrew Haley <aph@redhat.com>2004-03-15 14:15:09 +0000
committerAndrew Haley <aph@gcc.gnu.org>2004-03-15 14:15:09 +0000
commit0bb1600af12451af5f158fc058c35ea02ecd80fb (patch)
tree2e3e9a7701b78ac4926ee8312dbc2db3b3db8c7b /gcc
parent5c3c69f4bab9c68ab7f70ab590c0ff12673fb6be (diff)
downloadgcc-0bb1600af12451af5f158fc058c35ea02ecd80fb.zip
gcc-0bb1600af12451af5f158fc058c35ea02ecd80fb.tar.gz
gcc-0bb1600af12451af5f158fc058c35ea02ecd80fb.tar.bz2
re PR java/14551 (Switch w sign-extended byte and >16 labels causes error in tree.c)
2004-03-12 Andrew Haley <aph@redhat.com> PR java/14551 * typeck.c (convert): Clear TREE_OVERFLOW after an integer conversion. From-SVN: r79493
Diffstat (limited to 'gcc')
-rw-r--r--gcc/java/ChangeLog6
-rw-r--r--gcc/java/typeck.c9
2 files changed, 14 insertions, 1 deletions
diff --git a/gcc/java/ChangeLog b/gcc/java/ChangeLog
index 8b46231..f080725 100644
--- a/gcc/java/ChangeLog
+++ b/gcc/java/ChangeLog
@@ -1,3 +1,9 @@
+2004-03-12 Andrew Haley <aph@redhat.com>
+
+ PR java/14551
+ * typeck.c (convert): Clear TREE_OVERFLOW after an integer
+ conversion.
+
2004-02-29 Roger Sayle <roger@eyesopen.com>
* jcf-parse.c (java_parse_file): Handle the case that input_filename
diff --git a/gcc/java/typeck.c b/gcc/java/typeck.c
index 7537c6c..d52afd2 100644
--- a/gcc/java/typeck.c
+++ b/gcc/java/typeck.c
@@ -137,7 +137,14 @@ convert (tree type, tree expr)
&& TARGET_FLOAT_FORMAT == IEEE_FLOAT_FORMAT)
return fold (convert_ieee_real_to_integer (type, expr));
else
- return fold (convert_to_integer (type, expr));
+ {
+ /* fold very helpfully sets the overflow status if a type
+ overflows in a narrowing integer conversion, but Java
+ doesn't care. */
+ tree tmp = fold (convert_to_integer (type, expr));
+ TREE_OVERFLOW (tmp) = 0;
+ return tmp;
+ }
}
if (code == REAL_TYPE)
return fold (convert_to_real (type, expr));