2004-05-10  Andrew Haley  <aph@redhat.com>

	* java-gimplify.c (java_gimplify_expr): Copy the LHS of a binary
	expression into a temporary variable.

	(java_gimplify_new_array_init): Set the DECL_CONTEXT of array and
	tmp to current_function_decl.
	
2004-04-13  Diego Novillo  <dnovillo@redhat.com>

	* expr.c (build_expr_wfl): Don't check type nodes for
	side effects.

2004-04-12  Diego Novillo  <dnovillo@redhat.com>

	* decl.c (java_expand_stmt): Remove.
	* lang.c (LANG_HOOKS_RTL_EXPAND_STMT): Remove.

2004-02-24  Richard Henderson  <rth@redhat.com>

	* java-gimplify.c (java_gimplify_new_array_init): Remove extra
	argument building BLOCK.

2004-02-19  Steven Bosscher  <stevenb@suse.de>

	* decl.c (poplevel): Don't output nested inline functions.

2004-02-16  Richard Henderson  <rth@redhat.com>

	* builtins.c (java_build_function_call_expr): Add static chain
	operand to call_expr.

2004-01-29  Richard Henderson  <rth@redhat.com>

        PR java/12906
        * decl.c (maybe_pushlevels): Careful with TREE_CHAIN when
        registering decls with push_jvm_slot.

2003-12-10  Diego Novillo  <dnovillo@redhat.com>

	* parse.y (resolve_field_access): Remove superfluous
	initialization of decl.

2003-12-10  Richard Henderson  <rth@redhat.com>

	* lang.c (java_post_options): Don't ever use rtl inlining.

2003-12-06  Jan Hubicka  <jh@suse.cz>

	* parse.y (resolve_field_access): Initialize decl.

2003-11-31  Richard Henderson  <rth@redhat.com>

	* lang.c (java_start_inlining): Remove.
	(LANG_HOOKS_TREE_INLINING_START_INLINING): Remove.

2003-11-31  Richard Henderson  <rth@redhat.com>

        * jcf-parse.c (java_parse_file): Finalize cgraph after emitting
        class tables.

2003-11-24  Richard Henderson  <rth@redhat.com>

	* Make-lang.in (parse.o): Remove -Wno-error.

2003-11-20  Richard Henderson <rth@redhat.com>

	* constants.c (build_constant_data_ref): Lay out the array type.

2003-11-20  Richard Henderson <rth@redhat.com>

	* class.c (build_indirect_class_ref): Use convert.
	* constants.c (build_constant_data_ref): Fix type on the decl
	and return that directly.
	(build_constants_constructor): Remove kruft to match.
	(build_ref_from_constant_pool): Use ARRAY_REF.
	* expr.c (build_java_indirect_ref): Use convert.
	(build_known_method_ref): Likewise.
	* parse.y (patch_string_cst): Likewise.

	* class.c (finish_class): Kill code to output_inline_function.

2003-11-12  Jason Merrill  <jason@redhat.com>

	PR optimization/12547
	* lang.c (java_tree_inlining_walk_subtrees): Restore.
	(LANG_HOOKS_TREE_INLINING_WALK_SUBTREES): Restore.

2003-11-12  Richard Henderson  <rth@redhat.com>

	* java-gimplify.c (java_gimplify_expr): Use annotate_with_locus
	instead of annotate_all_with_locus.

2003-11-10  Richard Henderson  <rth@redhat.com>

	* expr.c: Use append_to_statement_list instead of add_tree.

2003-10-30  Richard Henderson  <rth@redhat.com>

	* java-gimplify.c (cleanup_compound_expr): Remove.
	(cleanup_try_finally_expr): Remove.
	(java_gimplify_expr): Don't call them.
	(java_gimplify_case_expr): Use create_artificial_label.
	(java_gimplify_default_expr): Likewise.

2003-10-30  Richard Henderson  <rth@redhat.com>

	* expr.c (expand_java_switch, expand_java_add_case): New.
	(LOOKUP_SWITCH, TABLE_SWITCH): Use them.

2003-10-23  Richard Henderson  <rth@redhat.com>

	* java-gimplify.c (java_gimplify_expr): Return gimplify_status.

2003-10-14  Richard Henderson  <rth@redhat.com>

	* decl.c (finish_method): Set cfun->function_end_locus.
	* java-gimplify.c (java_gimplify_expr): Set input_location
	for EXPR_WITH_FILE_LOCATION.  Use annotate_all_with_locus.
	* parse.h (DECL_SOURCE_LINE_MERGE): Remove.
	(DECL_SOURCE_LINE_FIRST, DECL_SOURCE_LINE_LAST): Remove.
	* parse.y (missing_return_error): Use DECL_FUNCTION_LAST_LINE.
	(finish_method_declaration): Likewise.
	(start_artificial_method_body): Likewise.
	(lookup_cl): Use DECL_SOURCE_LINE.
	(start_complete_expand_method): Likewise.
	(java_complete_lhs): Fix IS_EXPR_CODE_CLASS check.

2003-10-13  Richard Henderson  <rth@redhat.com>

	* decl.c (java_add_stmt): Use annotate_with_locus.

2003-10-13  Richard Henderson  <rth@redhat.com>

        * expr.c (build_java_jsr): Don't emit LABEL_EXPR or
        load_type_state here.

2003-10-12  Richard Henderson  <rth@redhat.com>

	* class.c (build_utf8_ref, get_dispatch_table): Set TREE_INVARIANT.
	(make_class_data, build_symbol_entry, emit_symbol_table): Likewise.
	* decl.c (java_init_decl_processing): Likewise.
	* except.c (prepare_eh_table_type): Likewise.
	* parse.y (patch_assignment, patch_binop): Likewise.
	(patch_string_cst, patch_new_array_init): Likewise.
	* resource.c (compile_resource_data): Likewise.

2003-10-08  Jeff Sturm  <jsturm@one-point.com>

	* decl.c (cgraph.h): Include.
	(tree-inline.h, tree-dump.h, tree-flow.h): Remove includes.
	(complete_start_java_method): Remove.
	(start_java_method): Combine with complete_start_java_method.
	Remove dead code.
	(end_java_method): Don't patch or expand tree.
	Use finish_method.
	(finish_method): New function.
	(java_expand_body): Use tree_rest_of_compilation.
	(java_expand_stmt): New function.

	* java-gimplify.c (tree-dump.h): Include.
	(java_genericize): New function.
	(dump_java_tree): Declare.  New function.

	* java-tree.h (start_complete_expand_method): Remove declaration.
	(complete_start_java_method): Remove declaration.
	(finish_method, java_expand_stmt, java_genericize): Declare.

	* lang.c (LANG_HOOKS_RTL_EXPAND_STMT): Define.

	* parse.y (tree-inline.h, tree-dump.h, tree-flow.h,
	cgraph.h): Remove includes.
	(start_complete_expand_method): Declare.
	(source_end_java_method): Don't expand tree.  Use finish_method.
	Reset current_function_decl.
	(java_expand_method_bodies): Don't patch tree for class
	initialization or method synchronization.

2003-10-01  Richard Henderson  <rth@redhat.com>

        * decl.c (end_java_method): Invoke remove_useless_stmts_and_vars
        and lower_eh_constructs.
        * parse.y (source_end_java_method): Likewise.

2003-09-24  Jason Merrill  <jason@redhat.com>

	* decl.c, jcf-parse.c, jcf-write.c, parse.h, parse.y, resource.c:
	Revert from TREE_LOCUS to DECL_SOURCE_LOCATION.
	
2003-09-18  Richard Henderson  <rth@redhat.com>

        * lang.c (java_estimate_num_insns): Take an expr, not a decl.

2003-08-12  Diego Novillo  <dnovillo@redhat.com>

	* java-gimplify.c (java_gimplify_block): If the body is a
	NULL_TREE, return an empty statement.

2003-08-08  Jason Merrill  <jason@redhat.com>

	* parse.y (source_end_java_method): Support
	!keep_function_tree_in_gimple_form.
	Do TDI_generic dump.

2003-07-31  Andrew Haley  <aph@redhat.com>

	* java-tree.h: (add_stmt_to_compound): New function.
	(java_add_stmt): New function.
	(java_add_local_var): New function.
	(get_stmts): New function.
	* java-gimplify.c (java_gimplify_block): Allow for null body.
	* except.c (link_handler): Set h->stmt.
	(expand_start_java_handler): Build a TRY_CATCH_EXPR for this
	range;  don't expand_eh_region_start.
	(expand_end_java_handler): Rewrite.
	* java-except.h (stmt): New field.
	* expr.c (flush_quick_stack): Replace expand_assignment with
	java_add_stmt.
	(java_stack_dup): Replace emit_move_insn with java_add_stmt.
	(build_java_athrow): Replace expand_expr_stmt with java_add_stmt.
	(build_java_jsr): Replace emit_jump with java_add_stmt (build (GOTO_EXPR))
	(build_java_ret): Replace expand_computed_goto with 
	java_add_stmt (build (GOTO_EXPR))
	(expand_java_arraystore): Replace expand_assignment with
	java_add_stmt.
	(expand_java_return): Replace expand_return with 
	java_add_stmt (build (RETURN_EXPR))
	(expand_load_internal): Remove layout_decl, DECL_REGISTER,
	expand_decl, and expand_decl_init.  Instead, add the local
	variable and a MODIFY_EXPR to the current tree.
	(expand_iinc): Replace expand_assignment with
	java_add_stmt.
	(expand_compare): Replace expand_cond with
	java_add_stmt(build (COND_EXPR))
	(expand_java_goto): Replace expand_goto with 
	java_add_stmt (build (GOTO_EXPR))
	(expand_invoke): Replace expand_expr_stmt with java_add_stmt.
	(build_jni_stub): Generate a BIND_EXPR to hold the block we've
	created.  Don't distinguish between source and byte compiler.
	(expand_java_field_op):  Replace expand_assignment with
	java_add_stmt.
	(java_expand_expr): Abort.  No-one should call this function any
	more.
	(expand_byte_code): Replace expand_label with 
	java_add_stmt (build (LABEL_EXPR))
	(process_jvm_instruction): Replace build (JAVA_EXC_OBJ_EXPR) with
	build_exception_object_ref.  Replace expand_assignment with
	java_add_stmt.
	* except.c (link_handler): Null stmt field.
	(expand_start_java_handler): Don't expand_eh_region_start.
	Instead, generate a TRY_CATCH_EXPR and insert it into the tree
	we're building.
	(expand_end_java_handler): Don't expand_start_all_catch.  Instead,
	build a TRY_FINALLY_EXPR and wrap the catch block with it.
	Don't expand_end_all_catch.
	* decl.c (push_jvm_slot): Call pushdecl().
	(find_local_variable): Give symbolic names to unnamed local
	variables.
	(struct binding_level: stmts): New field.
	(poplevel): If any statements have been generated at this level,
	create a BIND_EXPR to hold them and copy the variables to it.  If
	we are at the outermost level, save this BIND_EXPR in the
	DECL_SAVED_TREE of this function.
	(maybe_pushlevels): Don't expand_start_bindings.
	(maybe_poplevels): Don't expand_end_bindings.
	(complete_start_java_method): Reorganize static initialization and
	synchronization logic for source compiler.  Remove pushlevel and
	expand_start_bindings for byte compiler.
	(end_java_method): Don't expand_end_bindings.  Add static
	initialization and synchronization logic for byte compiler.
	Set cfun->x_whole_function_mode_p.
	Call gimplify_function_tree and optimize_function_tree and
	expand_expr_stmt.
	(add_stmt_to_compound): New.
	(java_add_stmt): New.
	(java_add_local_var): New.
	(get_stmts): New.
	* parse.y (add_stmt_to_compound): Remove.
	* jcf-parse.c (parse_class_file): Don't call expand_expr_stmt for
	a native method -- we'll do that later.

2003-07-27  Andreas Jaeger  <aj@suse.de>

	* expr.c (build_expr_wfl): Convert remaining K&R prototypes
	to ISO C90.

2003-06-28  Jeff Sturm  <jsturm@one-point.com>

	* java-gimplify.c (java_gimplify_block): Rebuild BLOCK_SUBBLOCKS.
	* lang.c (flag_disable_gimple): Remove initialization.

2003-06-23  Jeff Law  <law@redhat.com>

	* Make-lang.in (java-gimplify.o): Add dependencies.

2003-06-22  Jeff Sturm  <jsturm@one-point.com>

	* parse.y (source_end_java_method): Don't attempt to inline
	or optimize trees if flag_disable_gimple.

	* Make-lang.in (JAVA_OBJS): Remove java-tree-inline.o.

2003-06-21  Jeff Sturm  <jsturm@one-point.com>

	* Make-lang.in (JAVA_OBJS): Add java-gimplify.o.

	* decl.c (java_init_decl_processing): Initialize size_type_node.
	(complete_start_java_method): Update DECL_SAVED_TREE.
	(dump_function): Remove.
	(java_optimize_inline): Remove.

	* expr.c (always_initialize_class_p): Initialize to 1.
	(build_instanceof): Build proper boolean condition.
	(build_class_init): Set DECL_INITIAL for init_test_decl.
	(force_evaluation_order): Don't save_expr a void expr node.

	* java-gimplify.c: New file.

	* java-tree.h (java_gimplify_expr): Declare.

	* lang.c (java_tree_inlining_walk_subtrees): Remove declaration.
	(flag_optimize_sci): Initialize to 0.
	(LANG_HOOKS_TREE_INLINING_WALK_SUBTREES): Remove define.
	(LANG_HOOKS_SIMPLIFY_EXPR): Add define.
	(java_tree_inlining_walk_subtrees): Remove function.
	(java_init): Set flag_disable_gimple to 1.

	* parse.y (source_end_java_method): Set cfun->x_whole_function_mode_p.
	Gimplify.  Optimize tree before expanding.  Update comments.
	(java_expand_method_bodies): Always save DECL_SAVED_TREE.
	(patch_invoke): Don't save_expr force_evaluation_order result.
	(patch_assignment): Use simpler compound expression.
	(patch_if_else_statement): Don't optimize constant condition nodes.

2003-03-02  Diego Novillo  <dnovillo@redhat.com>

	* class.c: Replace DECL_SOURCE_FILE with TREE_FILENAME and
	DECL_SOURCE_LINE with TREE_LINENO everywhere.

2003-02-03  Diego Novillo  <dnovillo@redhat.com>

	* parse.y (qualify_ambiguous_name): Initialize variable 'decl'.

2003-01-15  Jeff Law <law@redhat.com>

	* class.c: Use TREE_FILENAME and TREE_LINENO to extract file/line
	information from tree nodes.  Use annotate_with_file_line to
	annotate tree nodes with file/line information.
	* decl.c, jcf-parse.c, jcf-write.c, parse.h: Likewise.
	* parse.y: Likewise.
	* expr.c (java_expand_expr): Handle EXPR_WITH_FILE_LOCATION nodes.
	(build_expr_wfl): New function.
	* java-tree.def (EXPR_WITH_FILE_LOCATION): New node.
	* java-tree.h (EXPR_WFL_*): New macros.
	(build_expr_wfl): Declare.

Local Variables:
mode: change-log
change-log-default-name: "ChangeLog.tree-ssa"
End:
