* parse.y (patch_binop): Cast right hand side of shift expression
authortromey <tromey@138bc75d-0d04-0410-961f-82ee72b054a4>
Fri, 22 Nov 2002 21:49:06 +0000 (21:49 +0000)
committertromey <tromey@138bc75d-0d04-0410-961f-82ee72b054a4>
Fri, 22 Nov 2002 21:49:06 +0000 (21:49 +0000)
to `int'.  Fixes PR java/8676.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@59390 138bc75d-0d04-0410-961f-82ee72b054a4

gcc/java/ChangeLog
gcc/java/parse.y

index 0a2f1dc..9dd2e1e 100644 (file)
@@ -1,3 +1,8 @@
+2002-11-22  Tom Tromey  <tromey@redhat.com>
+
+       * parse.y (patch_binop): Cast right hand side of shift expression
+       to `int'.  Fixes PR java/8676.
+
 2002-11-22  Ranjit Mathew <rmathew@hotmail.com>
            Andrew Haley <aph@redhat.com>
 
index 2a77235..21b2235 100644 (file)
@@ -13465,6 +13465,11 @@ patch_binop (node, wfl_op1, wfl_op2)
       op1 = do_unary_numeric_promotion (op1);
       op2 = do_unary_numeric_promotion (op2);
 
+      /* If the right hand side is of type `long', first cast it to
+        `int'.  */
+      if (TREE_TYPE (op2) == long_type_node)
+       op2 = build1 (CONVERT_EXPR, int_type_node, op2);
+
       /* The type of the shift expression is the type of the promoted
          type of the left-hand operand */
       prom_type = TREE_TYPE (op1);