Commit 33173fd4 by Tom Tromey Committed by Tom Tromey

re PR java/23300 (DECL_FIELD_OFFSET == 0 versus build_field_ref)

	PR java/23300.
	* expr.c (build_field_ref): Don't generate otable reference when
	DECL_FIELD_OFFSET is 0.
	* class.c (maybe_layout_super_class): Pass outer class to
	do_resolve_class.

From-SVN: r103160
parent ce45ef46
2005-08-15 Tom Tromey <tromey@redhat.com> 2005-08-15 Tom Tromey <tromey@redhat.com>
PR java/23300.
* expr.c (build_field_ref): Don't generate otable reference when
DECL_FIELD_OFFSET is 0.
* class.c (maybe_layout_super_class): Pass outer class to
do_resolve_class.
2005-08-15 Tom Tromey <tromey@redhat.com>
* java-tree.h (LABEL_IN_SUBR): Removed. * java-tree.h (LABEL_IN_SUBR): Removed.
(LABEL_IN_SUBR): Likewise. (LABEL_IN_SUBR): Likewise.
(LABEL_IS_SUBR_START): Likewise. (LABEL_IS_SUBR_START): Likewise.
......
...@@ -2093,8 +2093,9 @@ maybe_layout_super_class (tree super_class, tree this_class) ...@@ -2093,8 +2093,9 @@ maybe_layout_super_class (tree super_class, tree this_class)
DECL_SOURCE_LINE (this_decl), 0); DECL_SOURCE_LINE (this_decl), 0);
#endif #endif
} }
super_class = do_resolve_class (NULL_TREE, this_class, super_class
super_class, NULL_TREE, this_wrap); = do_resolve_class (DECL_CONTEXT (TYPE_NAME (this_class)),
this_class, super_class, NULL_TREE, this_wrap);
if (!super_class) if (!super_class)
return NULL_TREE; /* FIXME, NULL_TREE not checked by caller. */ return NULL_TREE; /* FIXME, NULL_TREE not checked by caller. */
super_class = TREE_TYPE (super_class); super_class = TREE_TYPE (super_class);
......
...@@ -1688,13 +1688,7 @@ build_field_ref (tree self_value, tree self_class, tree name) ...@@ -1688,13 +1688,7 @@ build_field_ref (tree self_value, tree self_class, tree name)
tree base_type = promote_type (base_class); tree base_type = promote_type (base_class);
if (base_type != TREE_TYPE (self_value)) if (base_type != TREE_TYPE (self_value))
self_value = fold (build1 (NOP_EXPR, base_type, self_value)); self_value = fold (build1 (NOP_EXPR, base_type, self_value));
if (! flag_syntax_only if (! flag_syntax_only && flag_indirect_dispatch)
&& (flag_indirect_dispatch
/* DECL_FIELD_OFFSET == 0 if we have no reference for
the field, perhaps because we couldn't find the class
in which the field is defined.
FIXME: We should investigate this. */
|| DECL_FIELD_OFFSET (field_decl) == 0))
{ {
tree otable_index tree otable_index
= build_int_cst (NULL_TREE, get_symbol_table_index = build_int_cst (NULL_TREE, get_symbol_table_index
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment