summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-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 8b462313f59..f080725a1e2 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 7537c6c4332..d52afd23562 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));
OpenPOWER on IntegriCloud