* expr.c (process_jvm_instruction): Coerce to correct Throwable
sub-type the result of the call that gets the exception value.
* parse.y (java_complete_expand_methods): If flags_syntax_only,
don't call finish_class.
* parse.y (java_check_regular_methods): If METHOD_PRIVATE,
clear found before continuing.
* verify.c (verify_jvm_instructions): On an array load, allow
and handle top of stack to be TYPE_NULL.
git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@24697
138bc75d-0d04-0410-961f-
82ee72b054a4
replace the top of the stack with the thrown object reference */
if (instruction_bits [PC] & BCODE_EXCEPTION_TARGET)
{
- pop_value (ptr_type_node);
- push_value (soft_exceptioninfo_call_node);
+ tree type = pop_type (ptr_type_node);
+ push_value (build1 (NOP_EXPR, type, soft_exceptioninfo_call_node));
}
switch (byte_ops[PC++])
found = lookup_argument_method (super_class, DECL_NAME (method), sig);
/* Nothing overrides or it's a private method. */
- if (!found || (found && METHOD_PRIVATE (found)))
+ if (!found)
continue;
+ if (METHOD_PRIVATE (found))
+ {
+ found = NULL_TREE;
+ continue;
+ }
/* If found wasn't verified, it's DECL_NAME won't be set properly.
We set it temporarily for the sake of the error report. */
{
if (flag_emit_class_files)
write_classfile (current_class);
- else
+ else if (! flag_syntax_only)
finish_class (current_class);
}
}
found = lookup_argument_method (super_class, DECL_NAME (method), sig);
/* Nothing overrides or it's a private method. */
- if (!found || (found && METHOD_PRIVATE (found)))
+ if (!found)
continue;
+ if (METHOD_PRIVATE (found))
+ {
+ found = NULL_TREE;
+ continue;
+ }
/* If found wasn't verified, it's DECL_NAME won't be set properly.
We set it temporarily for the sake of the error report. */
{
if (flag_emit_class_files)
write_classfile (current_class);
- else
+ else if (! flag_syntax_only)
finish_class (current_class);
}
}