diff options
author | Tom Tromey <tromey@redhat.com> | 2004-11-04 23:12:29 +0000 |
---|---|---|
committer | Tom Tromey <tromey@redhat.com> | 2004-11-04 23:12:29 +0000 |
commit | 8dcd31a4e8322ac5778c6df17f13e2694d9dd088 (patch) | |
tree | 14b3d99712ce3a58197650f55128784bd5ef74e3 | |
parent | 6beb4aabbc5443562cb6c55a56dee16999acc669 (diff) |
* class.c (build_static_field_ref): Don't emit direct references
when using indirect dispatch.
git-svn-id: https://gcc.gnu.org/svn/gcc/branches/gcj-abi-2-dev-branch@90086 138bc75d-0d04-0410-961f-82ee72b054a4
-rw-r--r-- | gcc/java/ChangeLog | 5 | ||||
-rw-r--r-- | gcc/java/class.c | 3 |
2 files changed, 6 insertions, 2 deletions
diff --git a/gcc/java/ChangeLog b/gcc/java/ChangeLog index 20d3f18b524..6225e478c74 100644 --- a/gcc/java/ChangeLog +++ b/gcc/java/ChangeLog @@ -1,3 +1,8 @@ +2004-11-04 Tom Tromey <tromey@redhat.com> + + * class.c (build_static_field_ref): Don't emit direct references + when using indirect dispatch. + 2004-11-03 Tom Tromey <tromey@redhat.com> * expr.c (expand_java_arrayload): Set lhs_type_node. diff --git a/gcc/java/class.c b/gcc/java/class.c index d01ce72fd96..8998fdce85c 100644 --- a/gcc/java/class.c +++ b/gcc/java/class.c @@ -1054,8 +1054,7 @@ build_static_field_ref (tree fdecl) However, currently sometimes gcj is too eager and will end up returning the field itself, leading to an incorrect external reference being generated. */ - if ((is_compiled - && (! flag_indirect_dispatch || current_class == fclass)) + if ((is_compiled && ! flag_indirect_dispatch) || (FIELD_FINAL (fdecl) && DECL_INITIAL (fdecl) != NULL_TREE && (JSTRING_TYPE_P (TREE_TYPE (fdecl)) || JNUMERIC_TYPE_P (TREE_TYPE (fdecl))) |