+2004-12-03 Andrew Haley <aph@redhat.com>
+
+ PR java/18812
+ * except.c (link_handler): Patch 'outer' field of siblings of the
+ range we're demoting.
+
+2004-12-03 Andrew Haley <aph@redhat.com>
+
+ PR java/18697
+ * class.c (layout_class_method): Don't fail to override a method
+ simply because it has DECL_ARTIFICIAL set.
+
+2004-12-02 Tom Tromey <tromey@redhat.com>
+
+ PR java/16675:
+ * parse.y (craft_constructor): Special case null_pointer_node.
+
+2004-12-02 Tom Tromey <tromey@redhat.com>
+
+ PR java/18741:
+ * java-gimplify.c (java_gimplify_expr): Don't call
+ SET_EXPR_LOCATION unless wrapped tree is an expression.
+
+2004-11-27 Per Bothner <per@bothner.com>
+
+ * jcf-parse.c (set_source_filename): Improvement to Andrew's fix:
+ Fix fencepost error in 'i', which got executed one too many times.
+ Also, fold memcpy into explicit loop, as originally intended.
+ Also, free temporary 'buf' which otherwise leaks.
+
+2004-11-27 Per Bothner <per@bothner.com>
+
+ * expr.c (build_expr_wfl): Only declare last_file and last_filenode
+ local static variables if not USE_MAPPED_LOCATION.
+
+2004-11-27 Kazu Hirata <kazu@cs.umass.edu>
+
+ * class.c, decl.c, expr.c: Fix comment typos.
+
+2004-11-26 Andrew Pinski <pinskia@physics.uc.edu>
+
+ PR java/18305
+ * decl.c (end_java_method): Call
+ attach_init_test_initialization_flags on all the init_decls.
+ * parse.y (attach_init_test_initialization_flags): Move to ...
+ * expr.c (attach_init_test_initialization_flags): here and
+ support BIND_EXPR also.
+ * java-tree.h (attach_init_test_initialization_flags): Prototype.
+ * jcf-parse.c (parse_class_file): Don't disable class init
+ optimization.
+
+2004-11-25 Joseph S. Myers <joseph@codesourcery.com>
+
+ * gjavah.c, jcf-dump.c, jv-scan.c, jvspec.c: Avoid ` as left quote
+ in diagnostics.
+
+2004-11-24 Richard Henderson <rth@redhat.com>
+
+ * verify-glue.c (vfy_init_name, vfy_clinit_name, vfy_object_type,
+ vfy_string_type, vfy_throwable_type): Use ANSI declaration form.
+
+2004-11-24 Tom Tromey <tromey@redhat.com>
+
+ * verify.c (defer_merging): Don't use C++-style comment.
+ * verify.h (java_opcode): Added java_opcode_end.
+ * class.c (build_class_ref): Remove C++ comment and old FIXME.
+
+ * verify-impl.c (vfy_push_type): Removed bogus "return".
+ (initialize_stack): Use vfy_alloc and vfy_free.
+ (verify_instructions_0): Likewise.
+
+ * Merged gcj-abi-2-dev-branch to trunk.
+
+2004-11-24 Andrew Haley <aph@redhat.com>
+
+ * jcf-parse.c (parse_class_file): Set file_start_location.
+
+2004-11-10 Tom Tromey <tromey@redhat.com>
+
+ * class.c (make_field_value): Don't call build_static_field_ref.
+ (build_static_field_ref): Don't emit direct references when using
+ indirect dispatch.
+
+ * gcj.texi (Invoking gij): Document -verbose. Put -verbose and
+ -verbose:class into man page synopsis.
+
+2004-11-09 Tom Tromey <tromey@redhat.com>
+
+ * expr.c (build_java_arraystore_check): Still generate check if
+ element type is itself an array.
+
+2004-11-08 Tom Tromey <tromey@redhat.com>
+
+ * java-tree.h (soft_check_assignment_node): Removed.
+ (enum java_tree_index): Removed JTI_SOFT_CHECK_ASSIGNMENT_NODE.
+ * decl.c (java_init_decl_processing): Don't initialize
+ soft_check_assignment_node.
+
+2004-11-05 Tom Tromey <tromey@redhat.com>
+
+ * class.c (layout_class_methods): Don't add Miranda methods when
+ using indirect dispatch.
+
+2004-11-05 Bryce McKinlay <mckinlay@redhat.com>
+
+ * class.c (make_class_data): Call emit_assertion_table to set the
+ 'assertion_table' field.
+ (build_signature_for_libgcj): Move here from expr.c.
+ (add_assertion_table_entry): New function. Callback for assertion
+ hashtable traversal.
+ (emit_assertion_table): New. Take class argument, and generate
+ assertion table DECL based on the TYPE_ASSERTIONS hashtable.
+ * decl.c (init_decl_processing): Define assertion_entry_type record.
+ Push 'assertion_table' class field instead of 'verify'.
+ * expr.c (type_assertion_eq): Compare 'assertion_code' field.
+ (type_assertion_hash): Include 'assertion_code' in hash.
+ (add_type_assertion): Rewritten. Take class and assertion_code
+ arguments. Add assertions to the TYPE_ASSERTIONS hashtable.
+ (can_widen_reference_to): Use new add_type_assertion() arguments.
+ * java-tree.h (java_tree_index): Add JTI_ASSERTION_ENTRY_TYPE,
+ JTI_ASSERTION_TABLE_TYPE. Remove JTI_VERIFY_IDENTIFIER_NODE.
+ (verify_identifier_node): Removed.
+ (assertion_entry_type, assertion_table_type): New.
+ (ASSERTION_TYPES_COMPATIBLE, ASSERTION_IS_INSTANTIABLE): New. Type
+ assertion code definitions.
+ (struct type_assertion): Add assertion_code. Rename 'source_type' and
+ 'target_type' to 'op1' and 'op2'.
+ (add_type_assertion): Declare.
+ (lang_printable_name_wls): Remove unused definition.
+ * verify-glue.c: (vfy_is_assignable_from): New. Call add_type_assertion
+ to emit runtime assertion.
+ (vfy_note_stack_type): Clean up non-C90 declarations.
+ (vfy_note_local_type): Likewise.
+ * verify.h (vfy_is_assignable_from): Declare.
+ * verify-impl.c (is_assignable_from_slow): Remove unused function.
+ (ref_compatible): Rename arguments. Call vfy_is_assignable_from()
+ instead of is_assignable_from_slow().
+ (types_compatible): Reinstate ref_compatible() call.
+
+2004-11-04 Tom Tromey <tromey@redhat.com>
+
+ * class.c (build_static_field_ref): Reverted previous patch.
+
+ * 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.
+ (expand_java_arraystore): Set rhs_type_node.
+
+2004-11-02 Tom Tromey <tromey@redhat.com>
+
+ * jcf-parse.c (compute_class_name): Use filename length from zip
+ directory, not strlen.
+
+ * expr.c (expand_invoke): Mark new interface methods as abstract.
+
+2004-11-01 Tom Tromey <tromey@redhat.com>
+
+ * verify-impl.c (push_jump): Removed check for uninitialized
+ objects.
+ (push_exception_jump): Likewise.
+ (handle_ret_insn): Likewise.
+ (handle_jsr_insn): Likewise.
+ (state_check_no_uninitialized_objects): Removed.
+
+ * decl.c (check_local_unnamed_variable): Recognize
+ promoted-to-int parameters when using the new verifier.
+ * expr.c (expand_java_arraystore): Explicitly request array type
+ when using new verifier.
+ (expand_java_arrayload): Likewise.
+ (invoke_build_dtable): Don't pass object_type_node as
+ expression argument to build_java_indirect_ref.
+ (build_java_check_indexed_type): Do nothing.
+ (build_java_arraystore_check): Handle case where array doesn't
+ have array type.
+ (build_java_array_length_access): Likewise.
+ (expand_invoke): Handle case where interface overrides a method
+ from Object.
+ (pop_type_0): Always succeed for reference types.
+ (process_jvm_instruction): Don't pop a value in a dead
+ exception handler.
+ (pop_arguments): Convert arguments to correct types.
+
+2004-10-29 Andrew Haley <aph@redhat.com>
+
+ * jcf-parse.c (give_name_to_class): Remove line that was
+ incorrectly merged.
+
+2004-10-29 Andrew Haley <aph@redhat.com>
+
+ * jcf-parse.c (set_source_filename): Add code to build new sfname.
+
+2004-10-20 Andrew Haley <aph@redhat.com>
+
+ * decl.c (end_java_method): Don't expand if flag_syntax_only.
+
+2004-10-26 Tom Tromey <tromey@redhat.com>
+
+ * verify.h (vfy_notify_verified): Removed.
+ * verify-glue.c (vfy_notify_verified): Removed.
+
+2004-10-26 Tom Tromey <tromey@redhat.com>
+
+ * verify-impl.c (debug_print_state): Declare `i' before code.
+ (merge_types): Modify `t' when it is null_type.
+
+2004-10-26 Tom Tromey <tromey@redhat.com>
+
+ * verify-impl.c (type_print): Renamed from print. Now static and
+ takes an argument.
+ (debug_print_state): Use type_print.
+
+2004-10-25 Tom Tromey <tromey@redhat.com>
+
+ * expr.c (build_invokeinterface): Compute correct offset for
+ index into interface methods.
+
+2004-10-20 Tom Tromey <tromey@redhat.com>
+
+ * java-tree.h (verify_jvm_instructions_new): Declare.
+
+ * jvspec.c (jvgenmain_spec): Remove -fnew-verifier from cc1
+ command line.
+
+ * verify-impl.c (verify_instructions): Correctly handle wide
+ types on the stack.
+ * verify-glue.c (vfy_get_class_name): Use DECL_NAME.
+ (vfy_get_component_type): Strip pointer types.
+ (vfy_find_class): Use get_type_from_signature. Strip pointer
+ types.
+ Include java-except.h.
+
+2004-10-20 Bryce McKinlay <mckinlay@redhat.com>
+
+ * verify-impl.c (type_array_elementpop_raw, vfy_pop_type_t,
+ vfy_push_type_t, set_variable, add_new_state, merge_into,
+ handle_jsr_insn, branch_prepass, check_class_constant,
+ check_wide_constant, get_one_type, compute_static_types,
+ verify_instructions_0): Clean up C99 declarations after statements.
+
+2004-10-20 Tom Tromey <tromey@redhat.com>
+
+ * verify-impl.c (merge_refs): Compare reference against iterator,
+ not ref2.
+
+ * verify-glue.c (vfy_tag): Mask off resolved flag.
+
+2004-10-19 Tom Tromey <tromey@redhat.com>
+
+ * verify-impl.c (verify_instructions): Call vfy_note_local_type.
+ (init_state_with_stack): Initialize `this_type' in state.
+ (verify_method): Use debug_print.
+ * verify-glue.c (vfy_is_primitive): Removed debugging print.
+ (vfy_note_stack_depth): Reverted last patch.
+ (vfy_note_stack_type): Note pointer to Object, not Object.
+ (vfy_note_local_type): Likewise.
+
+ * verify.h (vfy_note_instruction_seen): Declare.
+ * verify-glue.c (verify_jvm_instructions_new): Set
+ BCODE_EXCEPTION_TARGET on target instruction.
+ (vfy_note_instruction_seen): New function.
+ * verify-impl.c (FLAG_INSN_SEEN): New define.
+ (verify_instructions_0): Set flag on instruction. Save state for
+ PC=0 later.
+ (verify_instructions): Call vfy_note_instruction_seen.
+
+ * verify-glue.c (vfy_note_stack_depth): Fix off-by-one error.
+ (verify_jvm_instructions_new): Call method_init_exceptions,
+ add_handler, and handle_nested_ranges.
+ * verify-impl.c (verify_method): Return 1 on success.
+ (verify_instructions_0): Save the state at PC=0.
+
+ * verify-impl.c (init_type_from_class): Set is_resolved and
+ ref_next on new ref_intersection.
+ (init_type_from_string): Likewise.
+
+2004-10-15 Bryce McKinlay <mckinlay@redhat.com>
+
+ * expr.c (expand_bytecode): Use verify_jvm_instructions_new
+ if flag_new_verifier is set.
+ * java-tree.h (flag_new_verifier): Declare.
+ * lang.opt (fnew-verifier): New option.
+ * verify-impl.c: Work around namespace pollution by undef'ing
+ 'current_class'.
+ (struct verifier_context): Make 'bytecode' const.
+ (verify_fail_pc): Pass -1 PC argument to vfy_fail.
+ (types_compatible): For the BC-ABI, always consider reference types
+ compatible.
+ (check_class_constant): Use vfr->current_class.
+ (check_constant): Likewise.
+ (check_wide_constant): Likewise.
+ (check_field_constant): Check for 'L' at start of type name.
+ (get_one_type): Return pointer instead of type. Set type result in
+ caller via passed type pointer.
+ (compute_argument_types): Update to use new get_one_type arguments.
+ (compute_return_type): Likewise.
+ (make_verifier_context): New. Allocate and initialize 'vfr'.
+ (free_verifier_context): New. Free 'vfr' and its contents.
+ (verify_method): Remove ATTRIBUTE_UNUSED. Call make_verifier_context
+ and free_verifier_context.
+
+2004-10-15 Tom Tromey <tromey@redhat.com>
+
+ * verify-glue.c (vfy_note_local_type): Mark argument as unused.
+ * verify.h (vfy_fail): Fixed formatting.
+
+ * verify-impl.c (vfr): Fixed comment formatting.
+ (collapse_type): New function.
+ (verify_instructions): Notify compiler about type map.
+ * verify.h (vfy_note_stack_depth): Updated.
+ (vfy_note_stack_type): Likewise.
+ (vfy_note_local_type): Likewise.
+ (vfy_unsuitable_type, vfy_return_address_type, vfy_null_type):
+ Declare.
+ * verify-glue.c (vfy_note_stack_depth): Correctly size type
+ state. Added `method' argument.
+ (vfy_note_stack_type): Renamed from vfy_note_type. Added `method'
+ argument.
+ (vfy_note_local_type): New function.
+ (vfy_unsuitable_type): Likewise.
+ (vfy_return_address_type): Likewise.
+ (vfy_null_type): Likewise.
+
+ * verify.h (VFY_IN_GCC): Removed.
+ (VFY_WANT_TYPEMAP): Removed.
+ * verify-impl.c (verify_instructions_0): Removed useless "\".
+ (struct state) <next>: Uncomment.
+
+2004-10-13 Bryce McKinlay <mckinlay@redhat.com>
+
+ * verify-impl.c: Formatting fixes. Reformat C++-style comments to
+ C-style.
+
+2004-10-06 Bryce McKinlay <mckinlay@redhat.com>
+
+ * Make-lang.in (verify.o): Re-enabled this target.
+ * verify-glue.c (vfy_get_interface_count): Add ATTRIBUTE_UNUSED.
+ (vfy_get_interface): Likewise.
+ (verify_jvm_instructions_new): Renamed from verify_jvm_instructions.
+ * verify.h (verify_jvm_instructions_new): Declare.
+ * verify-impl.c (free_state): Temporarily comment out unused
+ function.
+
+2004-10-06 Tom Tromey <tromey@redhat.com>
+
+ * java-tree.h (JV_STATE_READ): New enum value.
+
+2004-10-06 Bryce McKinlay <mckinlay@redhat.com>
+
+ * verify.h: New file.
+
+2004-10-05 Bryce McKinlay <mckinlay@redhat.com>
+
+ * verify-impl.c, verify-glue.c, verify.h: New files.
+ * Make-lang.in: Add rules for verify-impl.o and verify-glue.o.
+
+2004-09-24 Andrew Haley <aph@redhat.com>
+
+ * decl.c (check_local_unnamed_variable): Always use the PARM_DECL
+ for a slot if it's of pointer type.
+
+2004-09-14 Tom Tromey <tromey@redhat.com>
+
+ * class.c (make_class_data): Correctly initialize "state" field.
+ Initialize "engine" field.
+ * decl.c (java_init_decl_processing): Add "engine" field.
+
+2004-09-10 Andrew Haley <aph@redhat.com>
+
+ PR java/12760
+ * expr.c (build_invokeinterface): Use fast method for interface
+ dispatch.
+ * java-tree.h (enum java_tree_index): Add JTI_ITABLE_TYPE,
+ JTI_ITABLE_PTR_TYPE.
+ (struct lang_type): Add itable_methods, itable_decl, itable_syms_decl.
+ (emit_symbol_table): Add new arg, element_size.
+ * decl.c (java_init_decl_processing): Initialize Class.itable.
+ * class.c (GEN_TABLE): New macro.
+ (gen_indirect_dispatch_tables): Use it. Add itable.
+ (make_class_data): Add new arg for emit_symbol_table().
+ Emit itable.
+ (add_miranda_methods): Make sure search_class has been parsed.
+ (emit_symbol_table): Add new arg, element_size.
+
+2004-09-06 Andrew Haley <aph@redhat.com>
+
+ * verify.c (merge_types): Return Object for all merges of
+ interfaces.
+ * expr.c (add_type_assertion): Don't generate assertions when
+ source type is array of Object.
+
+2004-09-03 Andrew Haley <aph@redhat.com>
+
+ * class.c (finish_class): Nullify TYPE_VERIFY_METHOD.
+
+ * lang.c (java_post_options): Force flag_verify_invocations if
+ we're not using indirect dispatch.
+
+ * expr.c (pop_type_0): Move test for interfaces before call to
+ can_widen_reference_to().
+ (build_signature_for_libgcj): Remove generation of canonical array
+ type.
+ (add_type_assertion): Canonicalize both arrays.
+ Don't assert that type X can be assigned to Object.
+ Don't assert that type X an be assigned to type X.
+ Don't assert that Object can be assigned to type X.
+ (can_widen_reference_to): Warn whenever we generate an assertion.
+ (process_jvm_instruction): Use throwable_type_node for the type of
+ an exception class.
+
+2004-09-01 Andrew Haley <aph@redhat.com>
+
+ * decl.c (java_init_decl_processing): Change
+ verify_identifier_node to "__verify".
+ * expr.c (add_type_assertion): Use verify_identifier_node for name.
+ * java-tree.h (verify_identifier_node): Change to "__verify".
+
+ * expr.c (build_signature_for_libgcj): New function.
+ (add_type_assertion): Use it to construct signatures for
+ source_type and target_type.
+
+2004-08-27 Andrew Haley <aph@redhat.com>
+
+ * java-tree.h (enum java_tree_index): Add JTI_VERIFY_IDENTIFIER_NODE.
+ (verify_identifier_node): New.
+ (TYPE_VERIFY_METHOD): New.
+ (struct type_assertion): New type.
+ * expr.c (type_assertion_eq): New function.
+ (type_assertion_hash): New function.
+ (add_type_assertion): New function.
+ (can_widen_reference_to): Call add_type_assertion().
+ * decl.c (java_init_decl_processing): Add verify_identifier_node.
+ * class.c (make_class_data): Initialize TYPE_VERIFY_METHOD (type).
+ (finish_class): Output TYPE_VERIFY_METHOD (type).
+
+ * decl.c (end_java_method): Nullify unused fields.
+
+2004-08-17 Andrew Haley <aph@redhat.com>
+
+ * verify.c (defer_merging): Quieten.
+ * jcf-parse.c (load_class): Only try to open a class file if it's
+ java.lang.Object or if it's part of the current compilation.
+ Check that the class we just tried to load is the class we just
+ loaded. Quieten.
+ (java_parse_file): Set flag_verify_invocations off if we're
+ compiling from .class.
+ (parse_zip_file_entries): Abort if we try to read a dummy class.
+ * expr.c (can_widen_reference_to): Quieten.
+ (build_invokevirtual): Abort if we try to invokevirtual an
+ interface.
+ (expand_invoke): Don't build a non-interface call to an interface.
+ (build_instanceof): Don't do premature optimization if
+ flag_verify_invocations is not set.
+ * class.c (set_super_info): Disable code that inherits TYPE_DUMMY
+ from superclass.
+ (build_static_field_ref): Add correct type conversion for
+ field_address.
+ (add_miranda_methods): Disable generation of Miranda methods for
+ dummy classes.
+ (layout_class_method): Don't complain about non-static method
+ overrides static method with dummy classes.
+
+2004-08-13 Tom Tromey <tromey@redhat.com>
+
+ * class.c (build_static_field_ref): Re-enable atable lookups for
+ static fields.
+
+ * parse.y (strip_out_static_field_access_decl): Indentation fix.
+
+2004-08-11 Tom Tromey <tromey@redhat.com>
+
+ * gcj.texi (libgcj Runtime Properties): Document new properties.
+
+2004-08-06 Andrew Haley <aph@redhat.com>
+
+ * jcf-parse.c (load_class): Check that we really have loaded the
+ class we're looking for.
+
+2004-07-19 Andrew Haley <aph@redhat.com>
+
+ * verify.c (verify_jvm_instructions): Comment change only.
+
+ * typeck.c (build_java_array_type): Add size field to array name.
+
+ * java-tree.h (LOCAL_SLOT_P): New.
+ (update_aliases): Add PC argument.
+ (pushdecl_function_level): New function.
+
+ * java-gimplify.c (java_gimplify_expr): Handle VAR_DECL,
+ MODIFY_EXPR, and SAVE_EXPR.
+ (java_gimplify_modify_expr): New function.
+
+ * expr.c (push_type_0): Call find_stack_slot() to create temporary.
+ (expand_iinc): Pass PC to update_aliases().
+ (STORE_INTERNAL): Likewise.
+ (process_jvm_instruction): Likewise.
+
+ * decl.c (base_decl_map): New variable.
+ (uniq): New variable.
+ (update_aliases): Rewrite with more thorough checking.
+ (debug_variable_p): New function.
+ (push_jvm_slot): Don't initialize local variable. Don't pushdecl.
+ (check_local_named_variable): Delete whole function.
+ (initialize_local_variable): New function.
+ (check_local_unnamed_variable): Add checks and comments.
+ (find_local_variable): Rewrite.
+ (java_replace_reference): New function.
+ (function_binding_level): New variable.
+ (pushdecl_function_level): New function.
+ (maybe_pushlevels): Set DECL_LOCAL_END_PC.
+ (maybe_pushlevels): Call pushdecl() on each of the new decls.
+ (start_java_method): Reset uniq. Create base_decl_map. Set
+ function_binding_level.
+ (end_java_method): Null unused fields to save memory.
+
+2004-06-29 Andrew Haley <aph@redhat.com>
+
+ * except.c (expand_start_java_handler): Push a new binding level.
+ Don't build a TRY_CATCH_EXPR now, we'll do it later. Call
+ register_exception_range() to register where we'll do it.
+ (expand_end_java_handler): Remove old bogus code. Replace with
+ new logic that simply builds TRY_CATCH_EXPRs and inserts them at
+ the top of the expression we're curently building.
+ (maybe_end_try): Delete.
+ * decl.c (binding_level.exception_range): New field.
+ (clear_binding_level): Add field exception_range. Reformat.
+ (poplevel): Call expand_end_java_handler().
+ (poplevel): Call java_add_stmt only if functionbody is false.
+ (maybe_poplevels): Don't call maybe_end_try() from here.
+ (end_java_method): Clear no longer used trees in function decl.
+ (register_exception_range): New function.
+ * java-tree.h (register_exception_range, struct eh_range): Declare.
+
+2004-06-22 Andrew Haley <aph@redhat.com>
+
+ * class.c (gen_indirect_dispatch_tables): Set the DECL_OWNER of
+ the otable.
+ * check-init.c (get_variable_decl): Teach check-init about
+ FIELD_DECLs addressed via the otable.
+ * jcf-parse.c (load_class): Check CLASS_LOADED_P, not
+ CLASS_PARSED_P.
+
+2004-05-28 Andrew Haley <aph@redhat.com>
+
+ * jcf-parse.c (load_class): Don't try to read a class that we've
+ already read.
+
+ * expr.c (build_invokeinterface): Use the old-fashioned way of
+ doing indirect dispatch: look up interfaces by name.
+ * java-tree.h (enum java_tree_index): Add
+ JTI_SOFT_LOOKUPINTERFACEMETHODBYNAME_NODE
+ * decl.c (java_init_decl_processing): Add
+ soft_lookupinterfacemethodbyname_node.
+
+ * gjavah.c (print_method_info): Final methods have vtable entries,
+ so gjavah needs to output them.
+ * class.c (layout_class_method): Generate vtable entries for final
+ methods.
+ * parse.y (invocation_mode): Use INVOKE_VIRTUAL for indirect
+ dispatch, even if a method is final.
+
+2004-05-25 Andrew Haley <aph@redhat.com>
+
+ * class.c (build_symbol_entry): Convert the names of constructors
+ to init_identifier_node when generating an entry for the indirect
+ dispatch table.
+
+ * expr.c (build_known_method_ref): Generate indirect calls for
+ all methods marked DECL_EXTERNAL or TREE_PUBLIC.
+
+2004-05-24 Andrew Haley <aph@redhat.com>
+
+ * expr.c (build_known_method_ref): Make sure ARRAY_REF access to
+ atable element is of the right type.
+
+ * class.c (build_static_field_ref): Cast pointer to correct type
+ for field.
+
+2004-04-20 Bryce McKinlay <mckinlay@redhat.com>
+
+ * Merged with HEAD as of 20040514. Diff against
+ gcj-abi-2-merge-20040514.
+
+2004-04-16 Andrew Haley <aph@redhat.com>
+
+ * verify.c (check_pending_block): Disable subroutine checks.
+ (defer_merging): New function.
+ (merge_types): If types are dummy, use defer_merging to combine them.
+ (verify_jvm_instructions): If invocation is invokeinterface and
+ target is dummy, assume target really is an interface.
+
+ * parse.y (patch_invoke): Break out call to java_create_object.
+
+ * lang.c (flag_verify_invocations): New.
+
+ * jcf-parse.c (load_class): If we've already failed to load a
+ class, don't try again.
+ (load_class): If we can't find a .class file, don't fail, but emit
+ a warning.
+ (parse_class_file): Don't act on dummy methods.
+
+ * java-tree.h (flag_verify_invocations): New.
+ (TYPE_DUMMY): New.
+ (lang_type.dummy_class): New field.
+ (java_create_object): New function.
+ (METHOD_DUMMY): New.
+
+ * expr.c (build_field_ref): Widen field offset.
+ (pop_type_0): If the type in stack_type_map is a TREE_LIST, check
+ that each of its elements is compatible with the one we're
+ popping.
+ (pop_type_0): Issue a warning to say that we need to generate a
+ runtime check.
+ (java_create_object): New function.
+ (build_field_ref): Only generate hard refs if we're not using
+ indirect dispatch.
+ (expand_java_field_op): If we're using !verify_invocations and we
+ see a missing field, generate a decl for it.
+
+ (expand_invoke): If a class doesn't have the method we seek and
+ we're using !flag_verify_invocations, generate a decl for the
+ method now.
+
+ (build_known_method_ref): Always use indirect dispatch via the
+ atable for static methods.
+
+ (expand_java_NEW): Break out object creation into new function,
+ java_create_object.
+
+ (can_widen_reference_to): Issue a warning to say that we need to
+ generate a runtime check.
+
+ * class.c (set_super_info): Inherit TYPE_DUMMY from sureclass.
+ (make_method_value): Also use index for interfaces.
+ (make_class_data): Skip dummy field for inherited data.
+ Don't build method array for dummy methods.
+ Set size_in_byte to -1 when using inirect dispatch
+ Don't build a hard class ref if we don't have a hard ref to our
+ superclass, or if we're using inirect dispatch.
+ Null out dispatch tables.
+
+ (layout_class_method): Don't complain about non-static method
+ overrides static method is method is artificial.
+
+ (build_static_field_ref): Disable atable references to static
+ fields for the time being.
+
+ (layout_class_methods): Check for CLASS_INTERFACE as
+ well as CLASS_ABSTRACT.
+
+2004-11-24 Steven Bosscher <stevenb@suse.de>
+
+ * class.c (make_class_data): Don't check flag_inline_functions.
+ * lang.c (flag_really_inline): Remove unused flag.
+ (java_handle_option): Don't set it here. Remove special handling
+ of flag_inline_functions for Java.
+ (java_init): Don't set flag_inline_trees here. Already done...
+ (java_post_options): ...here. Don't clear flag_inline_functions.
+
+2004-11-24 Steven Bosscher <stevenb@suse.de>
+
+ * java-gimplify.c (java_gimplify_labeled_block_expr): New function.
+ (java_gimplify_exit_block_expr): New function.
+ (java_gimplify_expr): Use them to gimplify EXIT_BLOCK_EXPR and
+ LABELED_BLOCK_EXPR.
+ * java-tree.def (LABELED_BLOCK_EXPR): Moved from tree.def.
+ (EXIT_BLOCK_EXPR): Likewise.
+ * java-tree.h (LABELED_BLOCK_LABEL): Moved from tree.h.
+ (LABELED_BLOCK_BODY): Likewise.
+ (EXIT_BLOCK_LABELED_BLOCK): Likewise.
+ * jcf-write.c (generate_bytecode_insns): Don't handle the unused
+ EXIT_BLOCK_RETURN operand. Use EXIT_BLOCK_LABELED_BLOCK instead of
+ TREE_OPERAND.
+ * lang.c (java_tree_inlining_walk_subtrees): Handle EXIT_BLOCK_EXPR.
+ (java_dump_tree): Use LABELED_BLOCK_LABEL, LABELED_BLOCK_BODY, and
+ EXIT_BLOCK_LABELED_BLOCK instead of TREE_OPERAND. Don't handle the
+ second operand of EXIT_BLOCK_EXPR.
+ * parse.y (find_expr_with_wfl): Use LABELED_BLOCK_BODY instead of
+ TREE_OPERAND.
+ (build_bc_statement): Use build1 to build EXIT_BLOCK_EXPR nodes.
+
+2004-11-23 Ben Elliston <bje@au.ibm.com>
+
+ * xref.h (xref_flag_value): Remove.
+ (xref_set_data, xref_get_data): Likewise.
+ (xref_set_current_fp): Likewise.
+ (XREF_NONE): Likewise.
+ (XREF_GET_DATA): Likewise.
+ * xref.c (xref_flag_value): Remove.
+ (xref_set_data, xref_get_data): Likewise.
+ (xref_set_current_fp): Likewise.
+
+2004-11-23 Ben Elliston <bje@au.ibm.com>
+
+ * gjavah.c (output_directory): Make static.
+ (temp_directory): Likewise.
+
+2004-11-15 Tom Tromey <tromey@redhat.com>
+
+ * decl.c (instn_ptr_type_node): Removed.
+ (lineNumbers_ptr_type_node): Removed.
+ (jint_type): Removed.
+ (jint_ptr_type): Removed.
+
+2004-11-09 Andrew Pinski <pinskia@physics.uc.edu>
+
+ PR java/15576
+ * check-init.c (check_init): Ignore DECL_EXPR.
+ * expr.c (always_initialize_class_p): Reenable.
+ (build_class_init): Use a variable to store the decl. Also use
+ boolean_false_node instead of integer_zero_node.
+ * parse.y (attach_init_test_initialization_flags): Add a decl_expr
+ to the block.
+
+2004-11-08 Tom Tromey <tromey@redhat.com>
+
+ PR java/16843:
+ * gjavah.c (HANDLE_END_FIELD): Call print_field_info when
+ generating a JNI header.
+ (print_field_info): Handle JNI headers.
+ (jni_print_float): Likewise.
+ (jni_print_double): Likewise.
+
+2004-11-08 Andrew Pinski <pinskia@physics.uc.edu>
+
+ * decl.c (end_java_method): Remove duplicated code.
+
+2004-11-06 Zack Weinberg <zack@codesourcery.com>
+ Gerald Pfeifer <gerald@pfeifer.com>
+
+ * lex.h (HAVE_ICONV): Undefine if we do not have HAVE_ICONV_H
+ as well.
+
+2004-11-02 Bryce McKinlay <mckinlay@redhat.com>
+
+ PR java/17265
+ * class.c: Reinstate 2004-08-18 patch.
+ (make_local_function_alias): Don't create an alias for extern (native)
+ functions.
+
+2004-10-22 Eric Botcazou <ebotcazou@libertysurf.fr>
+
+ PR java/17265
+ * class.c (make_local_function_alias): Revert 2004-08-18 change.
+ (make_method_value): Likewise.
+
+2004-10-21 Andrew Haley <aph@redhat.com>
+
+ PR java/18091:
+ * jcf-parse.c (set_source_filename): Add code to build new sfname.
+
+2004-10-20 Andrew Haley <aph@redhat.com>
+
+ * decl.c (end_java_method): Don't expand if flag_syntax_only.
+ Remove duplicated code block.
+
+2004-10-18 Steven Bosscher <stevenb@suse.de>
+
+ * Make-lang.in (java/parse.o-warn, java/parse-scan.o-warn):
+ New rules to work around old Bison warnings.
+
+2004-10-17 Steven Bosscher <stevenb@suse.de>
+
+ * class.c (ident_subst): Always alloca buffer.
+ * java-opcodes.h (LAST_AND_UNUSED_JAVA_OPCODE): Add this dummy
+ opcode after including javaop.def.
+ * jcf-dump.c (CHECK_PC_IN_RANGE): Return 0 from the arm of the
+ conditional expression that exits, to avoid warnings.
+ * verify.c (CHECK_PC_IN_RANGE): Mark the __GNUC__ definition as
+ a user of an extension.
+ * win32-host.c: Move check down to have non-empty file when
+ WIN32 is not defined.
+
+ * Make-lang.in (java-warn): Add STRICT_WARN.
+ (java/jcf-io.o-warn): Don't have Werror for this file.
+ * jcf-io.c (caching_stat): Add FIXME for non-POSIX scandir use.
+
+2004-10-16 Hans-Peter Nilsson <hp@bitrange.com>
+
+ * expr.c (expr_add_location): Move declaration to before all
+ statements.
+ * parse.y (java_expand_classes): Ditto.
+ * lex.c (java_peek_unicode): Ditto.
+
+2004-10-16 Ranjit Mathew <rmathew@hotmail.com>
+
+ * check-init.c: Use %<, %> and %q for quoting in diagnostics,
+ if possible, else convert `foo' to 'foo'.
+ * class.c: Likewise.
+ * decl.c: Likewise.
+ * expr.c: Likewise.
+ * jcf-io.c: Likewise.
+ * jcf-parse.c: Likewise.
+ * lang.c: Likewise.
+ * lex.c: Likewise.
+ * parse.h: Likewise.
+
+2004-10-16 Ranjit Mathew <rmathew@hotmail.com>
+
+ * parse.y (parse_warning_context): Remove ATTRIBUTE_PRINTF_2 and
+ rename parameter 'msg' to 'msgid' in function declaration.
+ (issue_warning_error_from_context): Likewise.
+ (yyerror): Rename parameter 'msg' to 'msgid'.
+ (all over): Use new quoting style for diagnostics.
+
+2004-10-15 Kazu Hirata <kazu@cs.umass.edu>
+
+ * boehm.c, builtins.c, java-except.h, jcf-io.c, jcf-path.c,
+ jcf.h, lang-specs.h, lex.c, lex.h, resource.c, win32-host.c:
+ Update copyright.
+
+2004-10-14 Matt Austern <austern@apple.com>
+
+ * lang.c (java_tree_inlining_walk_subtrees): Last arg is struct
+ pointer_set_t* now.
+
+2004-10-13 Tom Tromey <tromey@redhat.com>
+
+ PR java/15578:
+ * lang.opt (--extdirs): Document.
+ * jvspec.c (lang_specific_driver): Recognize -encoding and
+ -extdirs.
+
+2004-10-06 Ulrich Weigand <uweigand@de.ibm.com>
+
+ * parse.y (issue_warning_error_from_context): Use va_list *
+ instead of va_list parameter.
+ (parse_error_context): Update call.
+ (parse_warning_context): Likewise.
+
+2004-10-05 Zack Weinberg <zack@codesourcery.com>
+
+ * parse.y, parse-scan.y: Add list of diagnostic messages to
+ insulate translation template from version of yacc/bison used
+ to compile the grammar.
+
+2004-10-05 Ranjit Mathew <rmathew@hotmail.com>
+
+ Prepare for %q, %< and %> in diagnostic message strings.
+ * java-tree.h (parse_error_context): remove ATTRIBUTE_PRINTF_2.
+ Name second parameter 'msgid'.
+ * parse.y: Additionally include pretty-print.h and diagnostic.h.
+ (issue_warning_error_from_context): Use pretty-printer functions
+ instead of vsprintf for constructing formatted messages. Rename
+ parameter 'msg' to 'msgid'.
+ (parse_error_context): Rename parameter 'msg' to 'msgid'.
+ (parse_warning_context): Likewise.
+
+2004-10-05 Andrew Haley <aph@redhat.com>
+
+ PR java/17779
+ * jcf-parse.c (parse_zip_file_entries): If a class has a
+ superclass and a TYPE_SIZE of zero, lay it out.
+
+2004-09-30 Andrew Haley <aph@redhat.com>
+
+ PR java/17733
+ * jcf-parse.c (compute_class_name): Rewrite.
+
+2004-10-01 Jan Hubicka <jh@suse.cz>
+
+ * java.c (java_expand_body): Update call of tree_rest_of_compilation.
+
+2004-10-01 Kazu Hirata <kazu@cs.umass.edu>
+
+ * lex.c: Fix a comment typo.
+
+2004-10-01 Kazu Hirata <kazu@cs.umass.edu>
+
+ * java-tree.h: Fix a comment typo.
+
+2004-09-30 Per Bothner <per@bothner.com>
+
+ Simplify lexer. Implement --enable-mapped-location support.
+ * jcf-parse.c (parse_class_file): Use linemap_line_start.
+ (parse_source_file_1): Pass filename as extra parameter, so we can call
+ linemap_add and set input_location here, rather than in both callers.
+ (read_class): Pass copied filename to parse_source_file_1.
+ Don't initialize wfl_operator - only needed for source compilation.
+ (read_class, jcf_parse): Call linemap_add with LC_LEAVE.
+ * lex.h: Remove a bunch of debugging macros.
+ * lex.h (struct_java_line, struct java_error): Remove types.
+ (JAVA_COLUMN_DELTA): Remove - use java_lexer.next_colums instead.
+ (struct java_lc_s): Remove prev_col field.
+ (struct java_lexer): New fields next_unicode, next_columns, and
+ avail_unicode. New position field, and maybe token_start field.
+ Don't need hit_eof field - use next_unicode == -1 instead.
+ (JAVA_INTEGERAL_RANGE_ERROR): Rename to JAVA_RANGE_ERROR.
+ (JAVA_RANGE_ERROR, JAVA_FLOAT_ANGE_ERROR): Update accordingly.
+ * parse.h: Various changes for USE_MAPPED_LOCATION.
+ (EXPR_WFL_EMIT_LINE_NOTE): XXX
+ (BUILD_EXPR_WFL, EXPR_WFL_ADD_COL): Remove no-longer-used macros.
+ (struct parser_ctxt): New file_start_location field.
+ Remove p_line, c_line fields since we no longer save lines.
+ Remove elc, lineno, and current_jcf fields - no longer used.
+ * parse.y: Updates for USE_MAPPED_LOCATION and new lexer.
+ Don't use EXPR_WFL_ADD_COL since that isn't trivial with
+ source_location and is probably not needed anymore anyway.
+ Use new expr_add_Location function.
+ (SET_EXPR_LOCATION_FROM_TOKEN): New convenience macro.
+ (java_pop_parser_context): Minor cleanup.
+ (java_parser_context_save_global, java_parser_context_restore_global,
+ java_pop_parser_context): Save/restore input_location as a unit.
+ (issue_warning_error_from_context): If USE_MAPPED_LOCATION take
+ a source_location instead of a wfl context node.
+ (check_class_interface_creation): input_filename is not addressable.
+ (create_artificial_method): Calling java_parser_context_save_global
+ and java_parser_context_restore_global is overkill. Instead,
+ temporarily set input_location from class decl.
+ (java_layout_seen_class_methods): Set input_location from method decl.
+ (fix_constructors): Make more robust if no EXPR_WITH_FILE_LOCATION.
+ (finish_loop_body): Likewise.
+ * lex.c: Updates for USE_MAPPED_LOCATION. Use build_unknwon_wfl.
+ (java_sprint_unicode): Take a character, not index in line.
+ (java_sneak_uncode): Replaced by java_peek_unicode.
+ (java_unget_unicode): No longer used.
+ (java_allocate_new_line. java_store_unicode): Removed, since we
+ no longer remember "lines".
+ (java_new_lexer): Update for new data structures.
+ (java_read_char): Move unget_value checking to java_read_unicode.
+ (java_get_unicode, java_peek_unicode, java_next_unicode): New more
+ efficient functions that are used directly when lexing.
+ (java_read_unicode_collapsing_terminators): No longer needed.
+ (java_parse_end_comment, java_parse_escape_sequence, do_java_lex):
+ Re-organize to use java_peek_unicode to avoid java_unget_unicode.
+ (java_parse_escape_sequence): Rewrite to be simpler / more efficient.
+ (do_java_lex): Lots of movings around to avoid java_unget_unicode,
+ combine switch branches, and test for common token kinds earlier.
+ (java_lex_error): Rewrite.
+ * jv-scan.c (expand_location): New function, copied from tree.c.
+ (main): Set ctxp->filename instead of setting input_filename directly.
+
+2004-09-30 Per Bothner <per@bothner.com>
+
+ More cleanup for --enable-mapped-location.
+ * class.c (push_class): If USE_MAPPED_LOCATION don't set
+ input_location here. Instead do it in give_name_to_class.
+ (build_class_ref): Set DECL_ARTIFICIAL, for the sake of dwarf2out.
+ * expr.c (expand_byte_code): Call linemap_line_start.
+ * expr.c (build_expr_wfl): If USE_MAPPED_LOCATION, change final
+ parameters to a source_location. Don't need EXPR_WFL_FILENAME_NODE.
+ (expr_add_location): New function, if USE_MAPPED_LOCATION.
+ * class.c (maybe_layout_super_class): Adjust build_expr_wfl call
+ to USE_MAPPED_LOCATION case.
+
+ * java-tree.h (JAVA_FILE_P, ZIP_FILE_P): Remove unused macros.
+ * jcf-parse.c (java_parse_file): Don't set input_filename.
+ Use IS_A_COMMAND_LINE_FILENAME_P to check for duplicate filenames.
+ Create a list of TRANSLATION_UNIT_DECL.
+ (current_file_list): Is now a TRANSLATION_UNIT_DECL chain. The
+ reason is so we can set a DECL_SOURCE_LOCATION for each file.
+ (java_parse_file): Don't set unused ZIP_FILE_P, JAVA_FILE_P..
+ Create line-map LC_ENTER/LC_LEAVE entries for archive itself.
+ (file_start_location): New static.
+ (set_source_filename): Avoid extra access to input_filename macro.
+ Concatenate new name with class's package prefix.
+ (set_source_filename, give_name_to_class): Update.
+ (give_name_to_class): Set class's "line 0" input_location here.
+ (parse_class_file): Set input_location as a unit.
+
+ * jcf-parse.c (load_class): Sanity test if missing inner class file.
+
+2004-09-29 Per Bothner <per@bothner.com>
+
+ * java-tree.h: Redefine some macros and add some declaration
+ to handle the USE_MAPPED_LOCATION case.
+ * parse.h (EXPR_WFL_QUALIFICATION): Use operand 1, not 2.
+ * java-tree.h (EXPR_WFL_FILENAME_NODE): Use operand 2, not 1.
+ * java-tree.def (EXPR_WITH_FILE_LOCATION): Only need two operands in
+ USE_MAPPED_LOCATION case, since EXPR_WFL_FILENAME_NODE is gone.
+
+ * check-init.c (check_init): Handle USE_MAPPED_LOCATION case.
+ * decl.c (finish_method, java_add_stmt): Likewise.
+ * java-gimplify.c (java-gimplify.c): Likewise.
+ * jcf-write.c (generate_bytecode_insns): Likewise.
+ * lang.c (java_post_options): Likewise - call linemap_add.
+
+2004-09-29 Andrew Haley <aph@redhat.com>
+
+ PR java/17007
+ * parse.y (patch_binop): Don't mess with the TREE_SIDE_EFFECTS of the
+ result of TRUNC_MOD_EXPR.
+ (patch_unaryop): Likewise for CONVERT_EXPR, which may throw.
+ * decl.c (java_init_decl_processing): Mark
+ soft_lookupinterfacemethod_node and soft_instanceof_node pure.
+
+2004-09-28 Tom Tromey <tromey@redhat.com>
+
+ PR java/15710:
+ * class.c (add_miranda_methods): Load superinterface if not
+ already loaded.
+
+2004-09-28 Andrew Haley <aph@redhat.com>
+
+ PR java/17586
+ * jcf-parse.c (load_class): Don't try to read a class that we've
+ already read.
+
+2004-09-28 Andrew Haley <aph@redhat.com>
+
+ * jcf-parse.c (load_class): Back out previous broken patch.
+
+2004-09-28 Andrew Haley <aph@redhat.com>
+
+ PR java/17586
+ * jcf-parse.c (load_class): Don't try to read a class that we've
+ already read.
+ Check that we really did read the right class.
+
+2004-09-25 Tom Tromey <tromey@redhat.com>
+
+ PR java/17500:
+ * parse.y (create_artificial_method): Use add_method_1.
+
+2004-09-25 Kazu Hirata <kazu@cs.umass.edu>
+
+ * expr.c, jcf-dump.c, parse-scan.y, parse.y: Fix
+ comment typos.
+ * gcj.texi: Fix typos.
+
+2004-09-24 Tom Tromey <tromey@redhat.com>
+
+ PR java/15656:
+ * parse.y (class_instance_creation_expression): Set `$$' to NULL
+ in error parts of rule.
+ (unary_expression): Don't call error_if_numeric_overflow when $1
+ is NULL.
+
+2004-09-24 Tom Tromey <tromey@redhat.com>
+
+ PR java/16789:
+ * parse.y (resolve_qualified_expression_name): Set
+ CAN_COMPLETE_NORMALLY on first call when chaining static calls.
+ * expr.c (force_evaluation_order): Check for empty argument list
+ after stripping COMPOUND_EXPR.
+
2004-09-23 Andrew Haley <aph@redhat.com>
PR java/16927:
Fix bootstrap.
* gjavah.c (free_method_name_list): Fix function definition so
it's a proper C prototype.
-
+
2004-09-21 Tom Tromey <tromey@redhat.com>
PR java/17575: