diff --git a/gcc/java/expr.c b/gcc/java/expr.c index 623eb909334..ab3d2f3eac6 100644 --- a/gcc/java/expr.c +++ b/gcc/java/expr.c @@ -2197,8 +2197,8 @@ process_jvm_instruction (PC, byte_ops, length) 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++]) diff --git a/gcc/java/parse.c b/gcc/java/parse.c index c34aa135d8e..8d7da905bef 100644 --- a/gcc/java/parse.c +++ b/gcc/java/parse.c @@ -7161,8 +7161,13 @@ java_check_regular_methods (class_decl) 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. */ @@ -8310,7 +8315,7 @@ java_complete_expand_methods () { if (flag_emit_class_files) write_classfile (current_class); - else + else if (! flag_syntax_only) finish_class (current_class); } } diff --git a/gcc/java/parse.y b/gcc/java/parse.y index 03840042f2f..c6805c29628 100644 --- a/gcc/java/parse.y +++ b/gcc/java/parse.y @@ -4523,8 +4523,13 @@ java_check_regular_methods (class_decl) 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. */ @@ -5672,7 +5677,7 @@ java_complete_expand_methods () { if (flag_emit_class_files) write_classfile (current_class); - else + else if (! flag_syntax_only) finish_class (current_class); } }