re PR java/18362 (internal compiler error: in size_binop, at fold-const.c:1598)
2005-03-04 Andrew Haley <aph@redhat.com> PR java/18362 * class.c (set_method_index): Don't set method_index if it is NULL_TREE. (layout_class_method): Don't complain about "non-static method foo overrides static method" in the case of indirect dispatch. From-SVN: r95888
This commit is contained in:
parent
730967114b
commit
7235c3007d
@ -1,3 +1,11 @@
|
||||
2005-03-04 Andrew Haley <aph@redhat.com>
|
||||
|
||||
PR java/18362
|
||||
* class.c (set_method_index): Don't set method_index if it is
|
||||
NULL_TREE.
|
||||
(layout_class_method): Don't complain about "non-static method foo
|
||||
overrides static method" in the case of indirect dispatch.
|
||||
|
||||
2005-03-02 Kaveh R. Ghazi <ghazi@caip.rutgers.edu>
|
||||
|
||||
* jcf-io.c (caching_stat): Use __extension__ to avoid pedantic
|
||||
@ -59,7 +67,7 @@
|
||||
PR java/19907
|
||||
* expr.c (expand_byte_code): Call promote_arguments().
|
||||
(promote_arguments): New function.
|
||||
* decl.c (check_local_unnamed_variable): Remve special case for
|
||||
* decl.c (check_local_unnamed_variable): Remove special case for
|
||||
new verifier.
|
||||
(find_local_variable): Promote all boolean types to int
|
||||
when searching for local variable decls.
|
||||
|
@ -1476,14 +1476,19 @@ get_dispatch_table (tree type, tree this_class_addr)
|
||||
void
|
||||
set_method_index (tree decl, tree method_index)
|
||||
{
|
||||
method_index = fold (convert (sizetype, method_index));
|
||||
if (method_index != NULL_TREE)
|
||||
{
|
||||
/* method_index is null if we're using indirect dispatch. */
|
||||
method_index = fold (convert (sizetype, method_index));
|
||||
|
||||
if (TARGET_VTABLE_USES_DESCRIPTORS)
|
||||
/* Add one to skip bogus descriptor for class and GC descriptor. */
|
||||
method_index = size_binop (PLUS_EXPR, method_index, size_int (1));
|
||||
else
|
||||
/* Add 1 to skip "class" field of dtable, and 1 to skip GC descriptor. */
|
||||
method_index = size_binop (PLUS_EXPR, method_index, size_int (2));
|
||||
if (TARGET_VTABLE_USES_DESCRIPTORS)
|
||||
/* Add one to skip bogus descriptor for class and GC descriptor. */
|
||||
method_index = size_binop (PLUS_EXPR, method_index, size_int (1));
|
||||
else
|
||||
/* Add 1 to skip "class" field of dtable, and 1 to skip GC
|
||||
descriptor. */
|
||||
method_index = size_binop (PLUS_EXPR, method_index, size_int (2));
|
||||
}
|
||||
|
||||
DECL_VINDEX (decl) = method_index;
|
||||
}
|
||||
@ -2357,6 +2362,7 @@ layout_class_method (tree this_class, tree super_class,
|
||||
tree method_index = get_method_index (super_method);
|
||||
set_method_index (method_decl, method_index);
|
||||
if (method_index == NULL_TREE
|
||||
&& ! flag_indirect_dispatch
|
||||
&& !CLASS_FROM_SOURCE_P (this_class)
|
||||
&& ! DECL_ARTIFICIAL (super_method))
|
||||
error ("%Jnon-static method '%D' overrides static method",
|
||||
|
Loading…
Reference in New Issue
Block a user