aboutsummaryrefslogtreecommitdiff
path: root/gcc/java
diff options
context:
space:
mode:
authorTom Tromey <tromey@redhat.com>2002-08-26 23:30:02 +0000
committerTom Tromey <tromey@redhat.com>2002-08-26 23:30:02 +0000
commit39a6d3d23871b37eb2f2d2522f72a60bc95d9951 (patch)
tree9dba3d59f4fcfb7a507c8215af1fdb4eae943891 /gcc/java
parent494040741b6ebecb4ab7702dc11cce0241b87811 (diff)
* parse.y (try_builtin_assignconv): Allow narrowing primitive
conversion if RHS_TYPE is byte, short, or char. git-svn-id: https://gcc.gnu.org/svn/gcc/trunk@56589 138bc75d-0d04-0410-961f-82ee72b054a4
Diffstat (limited to 'gcc/java')
-rw-r--r--gcc/java/ChangeLog5
-rw-r--r--gcc/java/parse.y7
2 files changed, 10 insertions, 2 deletions
diff --git a/gcc/java/ChangeLog b/gcc/java/ChangeLog
index fe4e8f2cbbc..dd5061b76ac 100644
--- a/gcc/java/ChangeLog
+++ b/gcc/java/ChangeLog
@@ -1,3 +1,8 @@
+2002-08-26 Tom Tromey <tromey@redhat.com>
+
+ * parse.y (try_builtin_assignconv): Allow narrowing primitive
+ conversion if RHS_TYPE is byte, short, or char.
+
2002-08-22 Tom Tromey <tromey@redhat.com>
* gcj.texi (Invoking gij): Document -cp and -classpath.
diff --git a/gcc/java/parse.y b/gcc/java/parse.y
index 3dabe3593d0..30a2dce28ac 100644
--- a/gcc/java/parse.y
+++ b/gcc/java/parse.y
@@ -12915,11 +12915,14 @@ try_builtin_assignconv (wfl_op1, lhs_type, rhs)
new_rhs = convert (lhs_type, rhs);
/* Try a narrowing primitive conversion (5.1.3):
- - expression is a constant expression of type int AND
+ - expression is a constant expression of type byte, short, char,
+   or int, AND
- variable is byte, short or char AND
- The value of the expression is representable in the type of the
variable */
- else if (rhs_type == int_type_node && TREE_CONSTANT (rhs)
+ else if ((rhs_type == byte_type_node || rhs_type == short_type_node
+ || rhs_type == char_type_node || rhs_type == int_type_node)
+ && TREE_CONSTANT (rhs)
&& (lhs_type == byte_type_node || lhs_type == char_type_node
|| lhs_type == short_type_node))
{