re GNATS gcj/82 (code generation for jvm IRETURN fails on boolean/byte/short methods if INT_TYPE_SIZE < 32)
Wed Nov 03 02:16:00 PST 1999 Pekka Nikander <pekka.nikander@hut.fi> * decl.c (INT_TYPE_SIZE): Define if necessary. (expand_java_return): Handle the case of a native integer smaller than a JVM integer. (Fix to the Java PR #82: http://sourceware.cygnus.com/ml/java-prs/1999-q4/msg00078.html) From-SVN: r32051
This commit is contained in:
parent
8b97e23b76
commit
a0f4cca642
@ -1,3 +1,9 @@
|
|||||||
|
Wed Nov 03 02:16:00 PST 1999 Pekka Nikander <pekka.nikander@hut.fi>
|
||||||
|
|
||||||
|
* decl.c (INT_TYPE_SIZE): Define if necessary.
|
||||||
|
(expand_java_return): Handle the case of a native integer smaller
|
||||||
|
than a JVM integer.
|
||||||
|
|
||||||
2000-02-18 Martin von Loewis <loewis@informatik.hu-berlin.de>
|
2000-02-18 Martin von Loewis <loewis@informatik.hu-berlin.de>
|
||||||
|
|
||||||
* gjavah.c (help): Use GCCBUGURL.
|
* gjavah.c (help): Use GCCBUGURL.
|
||||||
|
@ -981,6 +981,10 @@ expand_java_pushc (ival, type)
|
|||||||
push_value (value);
|
push_value (value);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#ifndef INT_TYPE_SIZE
|
||||||
|
#define INT_TYPE_SIZE BITS_PER_WORD
|
||||||
|
#endif
|
||||||
|
|
||||||
static void
|
static void
|
||||||
expand_java_return (type)
|
expand_java_return (type)
|
||||||
tree type;
|
tree type;
|
||||||
@ -992,6 +996,16 @@ expand_java_return (type)
|
|||||||
tree retval = pop_value (type);
|
tree retval = pop_value (type);
|
||||||
tree res = DECL_RESULT (current_function_decl);
|
tree res = DECL_RESULT (current_function_decl);
|
||||||
retval = build (MODIFY_EXPR, TREE_TYPE (res), res, retval);
|
retval = build (MODIFY_EXPR, TREE_TYPE (res), res, retval);
|
||||||
|
|
||||||
|
/* Handle the situation where the native integer type is smaller
|
||||||
|
than the JVM integer. It can happen for many cross compilers.
|
||||||
|
The whole if expression just goes away if INT_TYPE_SIZE < 32
|
||||||
|
is false. */
|
||||||
|
if (INT_TYPE_SIZE < 32
|
||||||
|
&& (GET_MODE_SIZE (TYPE_MODE (TREE_TYPE (res)))
|
||||||
|
< GET_MODE_SIZE (TYPE_MODE (type))))
|
||||||
|
retval = build1(NOP_EXPR, TREE_TYPE(res), retval);
|
||||||
|
|
||||||
TREE_SIDE_EFFECTS (retval) = 1;
|
TREE_SIDE_EFFECTS (retval) = 1;
|
||||||
expand_return (retval);
|
expand_return (retval);
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user