OSDN Git Service

* jcf-write.c (generate_bytecode_insns): Generate an integer to
authormmitchel <mmitchel@138bc75d-0d04-0410-961f-82ee72b054a4>
Tue, 28 Aug 2001 17:55:10 +0000 (17:55 +0000)
committermmitchel <mmitchel@138bc75d-0d04-0410-961f-82ee72b054a4>
Tue, 28 Aug 2001 17:55:10 +0000 (17:55 +0000)
real conversion for increments and decrements of reals.

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

gcc/java/ChangeLog
gcc/java/jcf-write.c

index a54af0d..60d7527 100644 (file)
@@ -1,3 +1,8 @@
+2001-08-28  Mark Mitchell  <mark@codesourcery.com>
+
+       * jcf-write.c (generate_bytecode_insns): Generate an integer to
+       real conversion for increments and decrements of reals.
+
 2001-08-24  Alexandre Petit-Bianco  <apbianco@redhat.com>
 
        * parse.y (check_deprecation): Handle TYPE_DECL in a special case,
index 7339e95..383cc6a 100644 (file)
@@ -1960,8 +1960,15 @@ generate_bytecode_insns (exp, target, state)
       /* Stack, if ARRAY_REF:  ..., [result, ] array, index, oldvalue. */
       /* Stack, if COMPONENT_REF:  ..., [result, ] objectref, oldvalue. */
       /* Stack, otherwise:  ..., [result, ] oldvalue. */
-      if (size == 1)
-       push_int_const (value, state);
+      if (size == 1 || TREE_CODE (type) == REAL_TYPE)
+       {
+         push_int_const (value, state);
+         if (TREE_CODE (type) == REAL_TYPE)
+           {
+             RESERVE (1);
+             OP1 (TYPE_PRECISION (type) == 32 ? OPCODE_i2f : OPCODE_i2d);
+           }
+       }
       else
        push_long_const (value, (HOST_WIDE_INT)(value >= 0 ? 0 : -1), state);
       NOTE_PUSH (size);