Patch: another gcj assume-compiled fix
Tom Tromey
tromey@redhat.com
Thu Jan 23 23:27:00 GMT 2003
When using -fno-assume-compiled, gcj will sometimes try to fold a
field from an uncompiled class. This is required when the field in
question meets the appropriate criteria for a compile-time constant.
However, currently sometimes gcj is too eager and will end up
returning the field itself, leading to an incorrect external reference
being generated.
The appended patch fixes this by adding the appropriate conditions to
the check.
Ok for trunk?
Tom
Index: ChangeLog
from Tom Tromey <tromey@redhat.com>
* class.c (build_static_field_ref): Only a String or numeric field
can fold to a constant.
Index: class.c
===================================================================
RCS file: /cvs/gcc/gcc/gcc/java/class.c,v
retrieving revision 1.150
diff -u -r1.150 class.c
--- class.c 22 Jan 2003 20:51:55 -0000 1.150
+++ class.c 23 Jan 2003 23:22:43 -0000
@@ -923,7 +924,11 @@
int is_compiled = is_compiled_class (fclass);
/* Allow static final fields to fold to a constant. */
- if (is_compiled || FIELD_FINAL (fdecl))
+ if (is_compiled
+ || (FIELD_FINAL (fdecl) && DECL_INITIAL (fdecl) != NULL_TREE
+ && (JSTRING_TYPE_P (TREE_TYPE (fdecl))
+ || JNUMERIC_TYPE_P (TREE_TYPE (fdecl)))
+ && TREE_CONSTANT (DECL_INITIAL (fdecl))))
{
if (!DECL_RTL_SET_P (fdecl))
{
More information about the Java-patches
mailing list