2004-05-11  Diego Novillo  <dnovillo@redhat.com>

	* tree-cfg.c (delete_tree_cfg): Update call to
	free_basic_block_vars.

2004-05-10  Diego Novillo  <dnovillo@redhat.com>

	* tree-ssa-live.h: Fix typo in #include guard.

2004-05-08  Jeff Sturm  <jsturm@one-point.com>

	* tree-eh.c (lower_catch): Lower catch body in context of
	catch_region.

2004-05-07  Richard Henderson  <rth@redhat.com>

	* tree-eh.c (tree_could_trap_p): Use get_base_address on references.
	
2004-05-07  Diego Novillo  <dnovillo@redhat.com>

	* doc/invoke.texi: Remove documentation for -ftree-copyprop.
	Update documentation for -ftree-pre.

2004-05-06  Richard Henderson  <rth@redhat.com>

	* stmt.c (parse_output_constraint): Don't warn for read-write
        memory operand.
	* gimplify.c (gimplify_asm_expr): Force in-out memory operands
	to minimal lvalues, then expand to non-matching constraints.

2004-05-06  Zack Weinberg  <zack@codesourcery.com>

	* c-decl.c (finish_function): When !targetm.have_ctors_dtors,
	record static constructors and destructors here...
	(c_expand_body_1): ... not here.
	* c-objc-common.c (start_cdtor, finish_cdtor): Collapse
	together into
	(build_cdtor): ...here.  Update to construct a complete tree
	for the function.  No need to call push_scope, pop_scope, or
	clear_last_expr, or set current_function_cannot_inline.
	(c_objc_common_finish_file): Just call build_cdtor for static
	ctors/dtors, then clear the variables.  Do this before calling
	cgraph_finalize_compilation_unit and cgraph_optimize.

2004-05-06  Richard Henderson  <rth@redhat.com>

	* fold-const.c (fold): Don't build COND_EXPR from comparisons for
	boolean and integer result types.  Handle X ^ X for TRUTH_XOR_EXPR.

2004-05-05  Richard Henderson  <rth@redhat.com>

	* tree-nested.c (create_tmp_var_for): Disallow variable sized types.
	(convert_nonlocal_reference): Set val_only false for the base of a
	component or array reference.
	(convert_local_reference): Likewise.

2004-05-05  Richard Henderson  <rth@redhat.com>

	* gimplify.c (create_tmp_var): Disallow variable sized objects.
	(gimplify_modify_expr): Don't memcpy for VA_ARG_EXPR.

2004-05-05  Richard Henderson  <rth@redhat.com>

	* fold-const.c (operand_equal_p): Replace only_const argument with
	flags.  Allow pure functions if OEP_PURE_SAME.
	(fold, nondestructive_fold_binary_to_constant): Use OEP_ONLY_CONST.
	* tree-cfg.c (phi_alternatives_equal): Fix operand_equal_p flag type.
	* tree-ssa-dom.c (avail_expr_eq): Use OEP_PURE_SAME.
	* tree.h (enum operand_equal_flag): New.
	(operand_equal_p): Update argument list.

2004-05-05  Richard Henderson  <rth@redhat.com>

	* tree-ssa-operands.c (get_call_flags): Remove.
	(get_expr_operands): Use call_expr_flags.
	* tree-alias-common.c (call_may_clobber): Likewise.
	(call_may_return): Likewise.

2004-04-05  Andrew Pinski  <pinskia@physics.uc.edu>

	PR c/15062
	* c-typeck.c (build_asm_expr): Mark the output operands
	to an asm addressable, if necessary.

2004-05-05  Steven Bosscher  <stevenb@suse.de>

	* Makefile.in (GTFILES): Remove duplicate basic-block.h.

2004-05-04  Richard Henderson  <rth@redhat.com>

	* gimplify.c (build_addr_expr_with_type): Set TREE_ADDRESSABLE.
	(gimplify_modify_expr): Turn variable-width assignment into memcpy.
	* tree-nested.c (convert_local_reference): Set val_only after default.

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

	* tree-cfg.c (tree_cfg2vcg): Rename from tree_cfg2dot.  Update all
	users.
	Emit flowgraph using VCG syntax.
	* tree-dump.c (dump_files): Rename -fdump-tree-dot to
	-fdump-tree-vcg.
	* tree.h (enum tree_dump_index): Rename TDI_dot to TDI_vcg.
	* doc/invoke.texi: Update documentation to describe
	-fdump-tree-vcg.

2004-05-03  Andrew Pinski  <pinskia@physics.uc.edu>

	* objc/objc-act.c (build_objc_string_object):
	Add the fields to the purpose of the list for
	the constructor.

2004-05-03  Richard Henderson  <rth@redhat.com>

	* c-simplify.c (gimplify_if_stmt): Loop for else-if.

2004-05-03  Andrew Pinski  <pinskia@physics.uc.edu>

	PR optimization/15245
	* tree-ssa-phiopt.c (conditional_replacement): Use fold_convert
	instead of convert.

2004-05-03  Diego Novillo  <dnovillo@redhat.com>

	* gimplify.c (gimplify_compound_lval): Gimplify non-constant
	array indices into a temporary variable.

2004-04-30  Richard Henderson  <rth@redhat.com>

	* builtins.c (validate_arglist): Don't reject side effects.
	(simplify_builtin_strcpy): Do reject side effects in length.

2004-04-30  Jeff Law  <law@redhat.com>

	* tree-outof-ssa.c (eliminate_build): Move code which verifies
	that all of a PHI's arguments do not have a partition if the
	result does not have a partition from here to...
	(rewrite_trees): Here.

2004-04-24  Zdenek Dvorak  <rakdver@atrey.karlin.mff.cuni.cz>

	* tree-cfg.c (factored_computed_goto_label,
	factored_computed_goto): Removed.
	(disband_implicit_edges): Unfactor computed gotos without
	using them.

2004-04-23  Per Bothner  <per@bothner.com>

	* expr.c (expr_wfl_stack):  Remove unused global.

	Pre-patches for future source_location / location_t merge.
	* tree.h (EXPR_LOCATION, EXPR_HAS_LOCATION):  New macros.
	* expr.c (expand_expr_real, expand_expr_real_1):  Use new macros.
	* gimple-low.c (lower_stmt):  Likewise.
	* gimplify.c (annotate_all_with_locus):  Likewise.
	* print-tree.c (print_node):  Likewise.
	* tree-inline.c (expand_call_inline):  Likewise.
	* tree-pretty-print.c (tree-pretty-print.c):  Likewise.
	* tree-sra.c (scalarize_structure_assignment, emit_scalar_copies,
	scalarize_call_expr):  Likewise.
	* tree-ssa-pre.c (code_motion):  Likewise.
	
2004-04-23  Andrew Pinski  <pinskia@physics.uc.edu>

	* c-simplify.c (gimplify_decl_stmt) [TYPE_DECL]:
	Do not check the type.

2004-04-22  Jeff Law  <law@redhat.com>

	* tree-into-ssa.c (rewrite_initialize_block_local_data): Mark all
	arguments as potentially unused.  Do not bother to VARRAY_CLEAR
	the block_defs.  Instead abort if we are presented with a block
	which has a nonempty block_defs.  Wrap entire thing inside
	#ifdef ENABLE_CHECKING.
	* tree-ssa-dom.c (dom_opt_initialize_block_local_data): Similarly

	* tree-ssa-dom.c (redirect_edges_and_update_ssa_graph): Do not mark
	arguments to bypassed PHIs as needing to be rewritten.

2004-04-21  Richard Henderson  <rth@redhat.com>

	PR middle-end/14978
	* tree-nested.c (convert_nonlocal_reference): Set val_only when
	processing any otherwise unhandled expression.

2004-04-21  Jeff Law  <law@redhat.com>

 	* tree-ssa-copy.c (cprop_operand): Break out of cprop_into_stmt.
	(cprop_into_stmt): Use cprop_operand.  Rearrange slightly to avoid
	switch statement inside a loop.

	* tree-flow.h (var_ann_d): Add "current_def" field.
	(register_new_def): Lose last argument (currdefs table).
	* tree-into-ssa.c (currdefs): Remove.
	(rewrite_into_ssa): Initialize current_def field on each variable's
	annotation.  Remove initialization/clearing of currdefs.
	(set_value_for, get_value_for): Kill.
	(rewrite_initialize_block): Update call to register_new_def.
	(rewrite_stmt): Similarly.
	(rewrite_finalize_block): Get/set a _DECL node's current
	definition from its annotation.
	(get_reaching_def): Similarly.
	(register_new_def): Similarly.  Lose last argument.
	* tree-ssa-dom.c (currdefs): Remove.
	(get_value_for, set_value_for): Simplify.
	(tree_ssa_dominator_optimize): Initialize current_def on each
	variable's annotation.  Remove initialization/clearing of currdefs.
	(thread_across_edge): Lose unnecessary argument to register_new_def.
	(record_equivalences_from_phis): Likewise.
	(register_definitions_for_stmt): Likewise.
	(restore_currdefs_to_original_value): Get/set a _DECL node's current
	definition from its annotation.  Lose unnecessary "table" argument.
	(dom_opt_finalize_block): Corresponding changes.

	* tree-dfa.c (free_df_for_stmt): Release memory back to the GC
	system immediately.

2004-04-21  Ben Elliston  <bje@au.ibm.com>

	PR middle-end/14730
	* expr.c (expand_expr_real_1) <SWITCH_EXPR>: Discard out of bounds
	case label values and ranges.  Saturate case range values that
	exceed the minimum or maximum permitted value for the controlling
	expression type to TYPE_MIN_VALUE or TYPE_MAX_VALUE.

2004-04-20  Jeff Law  <law@redhat.com>

	* tree-into-ssa.c (register_new_def): Avoid pushing useless
	information onto the block local definition stack.

	* tree-into-ssa.c (register_new_def): If there is no current
	reaching definition for SSA_NAME_VAR (DEF), then just push
	SSA_NAME_VAR (DEF) onto the stack.
	(rewrite_finalize_block): If we pop a _DECL node from the stack,
	then the _DECL node has no current reaching definition.
	* tree-ssa-dom.c (restore_currdefs_to_original_value): Similarly.

2004-04-19  Jeff Law  <law@redhat.com>

	* tree-ssa-dom.c: Reinstate all changes from 2004-04-12.
	(lookup_avail_expr): Do not access a hash table object after
	it has been freed.

2004-04-19  Daniel Berlin  <dberlin@dberlin.org>

	* doc/passes.texi: Add blurb about PRE.

2004-04-19  Andrew Pinski  <pinskia@physics.uc.edu>

	* tree-ssa-phiopt.c (conditional_replacement):
	Catch some more non-gimple.

2004-04-19  Jan Hubicka  <jh@suse.cz>

	* predict.c (combine_predictions_for_bb): Fix pasto.

2004-04-18  Jan Hubicka  <jh@suse.cz>

	* tree-inline.c (estimate_num_insn_1): Deal properly with
	builtin_constant_p and builtin_expect.

2004-04-17  Andrew MacLeod  <amacleod@redhat.com>

	* doc/invoke.texi (tree-ter, tree-lrs): Document options.

2004-04-17  Paul Brook  <paul@codesourcery.com>

	* Makefile.in: Set GMPLIBS and GMPINC.
	* configure.ac: Add GMPLIBS and GMPINC.
	* configure: Regenerate.

2004-04-16  Andrew MacLeod  <amacleod@redhat.com>

	* common.opt (ftree-lrs): New common option.
	* flags.h (flag_tree_live_range_split): New flag.
	* opts.c (decode_options): Turn on LRS by default.
	(common_handle_option): Set LRS flag to specified value.
	* toplev.c (flag_tree_live_range_split): Initialize.
	(lang_independent_options f_): Add tree-lrs.
	* tree-outof-ssa.c (rewrite_out_of_ssa): Use LRS flag.
	* tree-ssa-copyrename.c (copy_rename_partition_coalesce): Don't coalesce
	variables if one is a hardware register.  Coalesce inlined user vars.
	(rename_ssa_copies): Scan blocks first, then PHI nodes.

2004-04-15  Andrew Pinski  <pinskia@physics.uc.edu>

	* builtins.c (fold_builtin_isascii): Do not return non-gimple
	code when we are in gimple form.
	(fold_builtin_isdigit): Do not return non-gimple
	code when we are in gimple form.

	* c-simplify.c (gimplify_decl_stmt): Handle TYPE_DECL.

2004-04-14  Paul Brook  <paul@codesourcery.com>

	* Makefile.in (GMPLIBS, GMPINC): Don't set.
	* configure.ac: Remove checks for GMP.
	* configure: Regenerate.

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

	* fold-const.c, tree-ssa-ccp.c, tree-ssa-dom.c,
	tree-ssa.c, tree.c: Replace all uses of TREE_UNSIGNED with
	TYPE_UNSIGNED or DECL_UNSIGNED.

	* c-semantics.c (build_stmt): Don't check type nodes for
	side effects.

2004-04-13  Jeff Law  <law@redhat.com>

	* tree-ssa-dom.c: Revert all changes from 2004-04-12.

2004-04-12  Jeff Law  <law@redhat.com>

	* tree-ssa-dom.c (struct expr_hash_elt): Add new field for hash value.
	(initialize_hash_element): New LHS argument.  Callers changed.
	Initialize the hash value field.
	(remove_local_expressions_from_table): Use htab_remove_elt_with_hash.
	(update_rhs_and_lookup_avail_expr): Similary.
	(lookup_avail_expr): Use htab_find_slot_with_hash.  Simplify slightly
	and pass LHS to initialize_hash_element.
	(record_cond): Also use htab_find_slot_with_hash.  Initialize the
	hash table entry with initialize_hash_element.
	(avail_expr_eq): Use the saved hash value rather than calling into
	the hash functions again.

	* tree-ssa-dom.c (tree_ssa_dominator_optimize): Slightly rearrange
	code to clear tables before each iteration to be clearer.

	* tree-ssa-dom.c (redirect_edges_and_update_ssa_graph): Use
	DEF_OPS and VDEF_OPS instead of STMT_DEF_OPS and STMT_VDEF_OPS.

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

	* flags.h (flag_tree_loop): Remove.  Update all users.
	* opts.c (common_handle_option) <OPT_ftree_loop_optimize>: Remove.
	* toplev.c (f_options): Remove -ftree-loop-optimize.
	* tree-optimize.c (init_tree_optimization_passes): Don't
	schedule pass_loop.
	* tree-ssa-loop.c (tree_ssa_loop_opt): Remove.
	(gate_loop): Remove.
	* doc/invoke.texi: Remove documentation for -ftree-loop-optimize.

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

	* c-lang.c (LANG_HOOKS_RTL_EXPAND_STMT): Remove.
	* c-semantics.c (expand_stmt_toplev): Remove.
	* langhooks-def.h (LANG_HOOKS_RTL_EXPAND_INITIALIZER): Remove.
	(LANG_HOOKS_RTL_EXPAND_START): Remove.
	(LANG_HOOKS_RTL_EXPAND_STMT): Remove.
	(LANG_HOOKS_RTL_EXPAND_END): Remove.
	* langhooks.h (struct lang_hooks_for_rtl_expansion): Remove.
	(struct lang_hooks): Update.
	* tree-optimize.c (tree_rest_of_compilation): Don't call
	lang_hooks.rtl_expand.start nor lang_hooks.rtl_expand.end.
	Call expand_expr_stmt_value instead of
	lang_hooks.rtl_expand.stmt.
	* objc/objc-lang.c (LANG_HOOKS_RTL_EXPAND_STMT): Remove.


2004-04-12  Richard Henderson  <rth@redhat.com>

	* c-common.c (c_do_switch_warnings): Use EXPR_LOCUS instead
	of STMT_LINENO.
	(c_walk_subtrees): Likewise.
	(c_estimate_num_insns_1): Remove FILE_STMT.
	* c-common.def (FILE_STMT): Remove.
	* c-common.h (FILE_STMT_FILENAME_NODE): Remove.
	(FILE_STMT_FILENAME, STMT_LINENO, STMT_LINENO_FOR_FN_P): Remove.
	(c_common_stmt_codes): Remove FILE_STMT.
	* c-dump.c (dump_stmt): Use EXPR_LOCUS instead of STMT_LINENO.
	* c-parse.in (lineno_stmt, lineno_label): Likewise.
	* c-pretty-print.c (pp_c_statement): Remove FILE_STMT.
	* c-semantics.c (add_stmt): Don't emit FILE_STMT.  Do set
	EXPR_LOCUS if not yet set.
	(finish_stmt_tree): Don't set line for end of function.
	(build_stmt): Set EXPR_LOCUS instead of STMT_LINENO.
	(prep_stmt): Use EXPR_LOCUS instead of STMT_LINENO.
	* c-simplify.c (c_gimplify_stmt): Remove FILE_STMT.
	(gimplify_block): Save and restore entire locus.
	(stmt_expr_last_stmt): Use EXPR_LOCUS instead of STMT_LINENO.
	* doc/c-tree.texi (FILE_STMT, FILE_STMT_FILENAME, STMT_LINENO): Remove.

2004-04-12  Jeff Law  <law@redhat.com>

	* tree-ssa-dom.c (true_exprs, false_exprs): Kill.
	(struct expr_hash_elt): New structure for the expression hash table.
	(struct dom_walk_block_data): Kill block local true_exprs and
	false_exprs.
	(get_eq_expr_value): One less local varray argument.  Fix prototype.
	Use record_cond rather than record_cond_is_{true,false}.
	(true_false_expr_hash, true_false_expr_eq): Kill.
	(record_cond_is_true, record_cond_is_false): Collapse into ...
	(record_cond): New function.
	(tree_ssa_dominator_optimize): Kill references to true_exprs and
	false_exprs.  Use "free" as the free function for the avail_exprs
	hash table.
	(dom_opt_initialize_block_local_data): No longer initialize
	block local true/false expressions.
	(initialize_hash_element): New function.
	(remove_local_expressions_from_table): Use initialize_hash_element.
	(update_rhs_and_lookup_avail_expr): Similarly.
	(dom_opt_finalize_block): Record true/false expressions into the
	main avail_expr hash table.  Unwind main hash table appropriately.
	Use record_cond rather than record_cond_is_{true,false}.
	(record_equivalences_from_incoming_edge): Pass block local avail_exprs
	varray instead of block local true/false varrays to get_eq_expr_value.
	(dump_dominator_optimization_stats): Update to reflect that the
	true/false expression hash tables are gone.
	(lookup_avail_expr): Simplify slightly now that we only have one
	expression hash table.
	(avail_expr_hash, avail_expr_eq): Generalize slightly to handle new
	hash table entry structure and having true/false expression information
	in the available expression hash table.

2004-04-09  Jeff Law  <law@redhat.com>

	* tree-ssa_dom.c (register_definitions_for_stmt): Accept a statement
	annotation rather than the statement itself.  Callers changed.
	Use [V]DEF_OPS rather than STMT_[V]DEF_OPS.
	* tree-ssa-operands.c (get_stmt_operands): Slightly reorganize to
	avoid unnecessary calls to stmt_ann.
	* tree-ssa-pre.c (expr_phi_insertion): Get the statement's annotation
	and use [V]USE_OPS rather than STMT_[V]USE_OPS.
	(same_e_version_phi_result): Similarly
	(process_left_occs_and_kills): Similarly for [V]DEF_OPS and
	STMT_[V]DEF_OPS.
	* tree-ssa.c (replace_immediate_uses): Similarly.
	(verify_ssa): Similarly.  Also verify that VDEF_OPs uses are dominated
	by their sets.

	* tree-into-ssa.c (insert_phi_nodes_for): Use passed in worklist
	varray instead of allocated one for every variable we rewrite into
	SSA form.
	(insert_phi_nodes_1): Pass worklist varray from caller to
	insert_phi_nodes_for.
	(insert_phi_nodes): Allocate a worklist for insert_phi_nodes_for
	and pass it to insert_phi_nodes_1.

2004-04-08  Jeff Law  <law@redhat.com>

	* tree-ssa-dom.c (nonzero_vars): Turn it into a bitmap.
	(tree_ssa_dominator_optimize): Update initialization, clearing and
	freeing of nonzero_vars.
	(restore_nonzero_vars_to_original_value): New function.
	(dom_opt_finalize_block): Use it.
	(record_var_is_nonzero): Only record the variable into the block
	local nonzero vars array if it did not already have a nonzero property.
	(lookup_avail_expr): Lookup the nonzero property of an SSA_NAME with
	a bitmap test.

	* fold-const.c (fold): Remove attempt to share code which
	simplifies tests against the highest/lowest value of a
	range between the main folder and the nondestructive folder.

2004-04-08  Brian Booth  <bbooth@redhat.com>
	    Diego Novillo  <dnovillo@redhat.com>

	* tree-into-ssa.c (invalidate_name_tags): New function.
	Mark aliases of invalidated name tags for renaming.
	(rewrite_into_ssa): Call invalidate_name_tags.

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

	* gimplify.c (gimplify_call_expr): Remove argument POST_P.
	Update all callers.
	Don't use POST_P when gimplifying the call expression.

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

	* doc/tree-ssa.texi: Add documentation for the dominator
	walker.

2004-04-07  Andrew MacLeod  <amacleod@redhat.com>

	* tree-outof-ssa.c: Update comments and reformat for legibility.
	* tree-ssa-copyrename.c: Update comments and reformat for legibility.
	* tree-ssa-live.c: Update comments and reformat for legibility.
	* tree-ssa-live.h: Update comments and reformat for legibility.

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

	* gimplify.c (gimplify_call_expr): Don't use POST_P when
	gimplifying CALL_EXPR arguments.

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

	* tree-dfa.c: Update comments and reformat for legibility.
	(find_vars_r): Remove special casing of MODIFY_EXPR and
	simplify logic.
	(compute_reached_uses, compute_reaching_defs, remove_decl,
	find_decl_location): Remove.
	(discover_nonconstat_array_refs_r,
	discover_nonconstant_array_refs): Move ...
	* tree-outof-ssa.c: ... here.

2004-04-05  Richard Henderson  <rth@redhat.com>

	* tree-simple.c (is_gimple_min_invariant): Disallow &a+i.
	* tree-ssa-ccp.c (maybe_fold_stmt_addition): Rename from
	maybe_fold_stmt_plus.  Handle MINUS_EXPR.
	(fold_stmt_r): Pass MINUS_EXPR to it.

2004-04-05  Ben Elliston  <bje@au.ibm.com>

	* Makefile.in (OBJS-common): Remove tree-browser.o.
	(cc1): Depend on @TREEBROWSER@ and include in list of objects.
	* configure.ac: Add --enable-tree-browser option.
	* configure: Rebuild.

2004-04-05  Andrew Pinski  <pinskia@physics.uc.edu>

	* tree-ssa-ccp.c (fold_stmt_r): Fix whitespace formatting.
	(set_rhs): Likewise.

2004-04-03  Paolo Bonzini  <bonzini@gnu.org>
	    Diego Novillo  <dnovillo@redhat.com>

	* tree-alias-common.c (find_func_aliases): Support
	assigning to BIT_FIELD_REFs.
	* tree-cfg.c (verify_expr): Don't allow assign to
	a register with BIT_FIELD_REF.
	* tree-dfa.c (get_virtual_var): Add consistency check on
	the shape of expected VARs.
	(discover_nonconstant_array_refs_r): Go through BIT_FIELD_REFs.
	* tree-simple.c: Document that BIT_FIELD_REFs are valid lvalues.
	* tree-ssa.c (set_is_used): Go through BIT_FIELD_REFs.
	* tree-ssa-operands.c (get_expr_operands): Mark VA_ARG_EXPR
	nodes as making volatile references.

2004-04-02  Fariborz Jahanian <fjahanian@apple.com>

	* c-convert.c (convert): Make convert work when converting
	to compatible types across translation unit.

2004-04-02  Andrew Pinski  <pinskia@physics.uc.edu>

	* Makefile.in (stage2_build): Remove support for
	rebuilding libbanshee.
	* configure.ac: Remove support for rebuilding
	libbanshee.
	* config.gcc (powerpc-*-darwin*): Do not rebuild
	libbanshee.

2004-04-01  Kazu Hirata  <kazu@cs.umass.edu>

	* tree-ssa-forwprop.c: Add a comment about forward propagation
	of TRUTH_NOT_EXPR.

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

	* tree-optimize.c (tree_rest_of_compilation): Fix typo in
	setting of in_gimple_form.

2004-04-01  Jeff Law  <law@redhat.com>

	* fold-const.c (fold_relational_hi_lo): Do not return non-gimple
	code when we are in gimple form.
	* tree-optimize.c (tree_rest_of_compilation): Note when we are in
	gimple form.
	* tree-ssa-ccp.c (ccp_fold): Tighten tests on return value from
	nondestructive_fold_{unary,binary}_to_constant.
	* tree.h (in_gimple_form): Declare.

	* tree-ssa.c (ssa_remove_edge): Correct looping structure.
	(ssa_redirect_edge): Similarly

2004-03-30  Brian Booth  <bbooth@redhat.com>

	* tree-pretty-print.c (dump_vops): Add flags argument and
	propagate it to dump_generic_node calls.
	(dump_generic_node): Update dump_vops call.

2004-03-29  Diego Novillo  <dnovillo@redhat.com>

	* configure.ac: Emit confirmation messages for libbanshee.
	* configure: Regenerate.

2004-03-29  Jan Hubicka  <jh@suse.cz>

	PR 14756
	* cgraphunit.c (cgraph_decide_inlining): Rewrite handling of
	always_inline functions.

2004-03-28  Jan Hubicka  <jh@suse.cz>

	* tree-inline.c (expand_call_inline):  Remove fixme introduced by
	nested function patch.

2004-03-26  Diego Novillo  <dnovillo@redhat.com>

	* tree-ssa-operands.c (get_stmt_operands): Remove always-true
	predicate.

	* tree-ssa-alias.c (maybe_create_global_var): Create
	.GLOBAL_VAR if there are no call-clobbered variables.
	* tree-ssa-operands.c (get_stmt_operands): Add call-clobbering
	VDEFs for asm ("":::"memory") if there are call-clobbered
	variables or if .GLOBAL_VAR has been created.


2004-03-26  Diego Novillo  <dnovillo@redhat.com>

	* passes.c (rest_of_compilation): Re-enable .01.rtl
	dumps.

2004-03-25  Diego Novillo  <dnovillo@redhat.com>

	* tree-pretty-print.c (dump_generic_node) <WITH_RECORD_EXPR>: Remove.
	* tree-inline.c (estimate_num_insns_1) <WITH_RECORD_EXPR>: Remove.
	* fold-const.c (fold_relational_hi_lo): Change type of argument
	'type_p' to const tree and rename it to 'type'.  Update
	all callers.

2004-03-25  Diego Novillo  <dnovillo@redhat.com>

	* Makefile.in (C_AND_OBJC_OBJS): Remove c-call-graph.o
	(c-call-graph.o): Remove.
	* c-call-graph.c: Remove.
	* c-tree.h (print_call_graph): Remove.
	(debug_call_graph): Remove.
	* tree-cfg.c: Update/add comments everywhere.
	(pre_insert_on_edge): Rename from bsi_insert_on_edge_immediate.
	* tree-flow.h (build_tree_cfg): Make static.
	(tree_cfg2dot): Likewise.
	(verify_stmt): Likewise.
	* tree-ssa-pre.c (insert_one_operand): Call pre_insert_on_edge.

2004-03-25  Diego Novillo  <dnovillo@redhat.com>

	* tree-ssa-alias.c (struct alias_info): Change type of field
	'num_references' to varray_type.  Update all users.

2004-03-24  Jeff Law  <law@redhat.com>

	* c-mudflap (mflang_flush_calls): Use push_scope/pop_scope instead
	of pushlevel and poplevel.

2004-03-23  Richard Henderson  <rth@redhat.com>

	PR middle-end/14694
	* c-common.c (handle_alias_attribute): Mark aliased variables
	to be TREE_STATIC.

2004-03-23  Jeff Law  <law@redhat.com>

	* tree-into-ssa.c (register_new_def): Lose unnecessary VAR argument,
	instead derive VAR from DEF argument.
	(rewrite_initialize_block, rewrite_stmt, rewrite_operand): Corresponding
	changes.
	* tree-ssa-dom.c (register_definitions_for_stmt): Corresponding changes.
	(record_equivalences_from_phis): Likewise.
	(restore_currdefs_to_original_value): New, extracted from ...
	(dom_opt_finalize_block): Use restore_currdefs_to_original_value.
	Restore currdefs after threading across a true edge.
	(thread_across_edge): Register new defintions when we walk through
	a PHI node or real statement.
	* tree-flow.h (register_new_def): Updated.

2004-03-23  Zdenek Dvorak  <rakdver@atrey.karlin.mff.cuni.cz>

	* tree-ssa-dce.c (find_obviously_necessary_stmts,
	perform_tree_ssa_dce): Do not remove loops.

2004-03-19  Diego Novillo  <dnovillo@redhat.com>

	PR optimization/14643
	* tree-ssa-alias.c (group_aliases_into): Don't add a variable
	to its own may-alias set.
	(create_alias_map_for): New.
	(setup_pointers_and_addressables): Call it.
	Fix allocation of AI->ADDRESSABLE_VARS and AI->POINTERS.
	If there are no addressable variables and more than one
	dereferenced pointers, add type tags to the ADDRESSABLE_VARS
	array.
	(get_tmt_for): Add comment about using alias set equality when
	checking for existing tags.

2004-03-19  Kazu Hirata  <kazu@cs.umass.edu>

	* fold-const.c (fold_relational_const): Remove dead code.

2004-03-19  Dale Johannesen  <dalej@apple.com>

	* tree-ssa-dse.c (dse_optimize_stmt):  Redirect uses feeding into
	a deleted store correctly.

2004-03-19  Jeff Law  <law@redhat.com>

	* tree-ssa-dom.c (simplify_rhs_and_lookup_avail_expr): Fix typo.
	Eliminate unnecessary test of VAL.

	* tree-dfa.c (find_hidden_use_vars): Also look inside the
	PENDING_SIZES list for hidden uses.
	* tree-optimize.c (tree_rest_of_compilation): Expand used variables
	before setting up parameters.
	* tree-ssa-copyrename.c (rename_ssa_copies): Do nothing for copies
	where the LHS has a hidden use.

2004-03-18  Diego Novillo  <dnovillo@redhat.com>

	* Makefile.in (TREE_FLOW_H): Reformat.
	(OBJS-common): Add tree-into-ssa.o and tree-outof-ssa.o.
	(tree-ssa.o): Remove dependency on domwalk.h and tree-ssa-live.h
	(tree-into-ssa.o): New.
	(tree-outof-ssa.o): New.
	(GTFILES): Remove tree-ssa.c.
	(gt-tree-ssa.h): Remove.
	* tree-into-ssa.c: New file.
	Move all the functions used to rename into SSA from tree-ssa.c.
	Update/add comments.
	Remove unused variables and structures.
	Don't use GGC for memory allocation.
	* tree-outof-ssa.c: New file.
	Move all the functions used to rename out of SSA from
	tree-ssa.c.
	Update/add comments.
	* tree-ssa-alias.c (compute_points_to_and_addr_escape): Add
	bibliographic reference.

2004-03-18  Jeff Law  <law@redhat.com>

	* Makefile.in (tree-tailcall.o): Depend on langhooks.h.
	* tree-tailcall.c: Include langhooks.h.
	(find_tail_calls): Use types_compatible_p langhook instead of
	equality test of TYPE_MAIN_VARIANT.

	* tree-nested.c (get_chain_decl): Mark the chain decl with
	TREE_NO_WARNING.

2004-03-18  Devang Patel  <dpatel@apple.com>

	* tree-ssa-live.c (new_tree_live_info): Set num_blocks to
	last_basic_block instead of n_basic_blocks.
	(calculate_live_on_entry): Use last_basic_block instead of
	n_basic_blocks.
	(calculate_live_on_exit): Same.

2004-03-17  Jeff Law  <law@redhat.com>

	* tree-tailcall.c (find_tail_calls): Tighten test for tail recursion.

2004-03-17  Diego Novillo  <dnovillo@redhat.com>

	PR optimization/14511
	* tree-ssa-alias.c (compute_flow_insensitive_aliasing): Do not
	ignore read-only variables.
	(may_alias_p): Fix pointer-to-var calculation when 'var' is an
	array.

2004-03-17  Jan Hubicka  <jh@suse.cz>

	* tree-ssa.c (rewrite_into_ssa, compute_global_livein): Fix.

2004-03-17  Paolo Bonzini  <bonzini@gnu.org>

	* builtins.c (expand_builtin_constant_p,
	purge_builtin_constant_p): Remove.
	(expand_builtin): Expand __builtin_constant_p to zero.
	* function.c (struct function): Remove calls_constant_p.
	(current_function_calls_constant_p): Remove.
	* passes.c (rest_of_handle_gcse): Do not run
	purge_builtin_constant_p.
	* rtl.def (CONSTANT_P_RTX): Die die die.

	* cse.c (fold_rtx): Do not handle CONSTANT_P_RTX.
	* expr.c (emit_move_insn): Likewise.
	* gcse.c (want_to_gcse_p, gcse_constant_p): Likewise.
	* genrecog.c (validate_pattern): Likewise.
	* recog.c (immediate_operand): Likewise.
	* rtl.h (CONSTANT_P): Likewise.
	* simplify-rtx.c (simplify_rtx): Likewise.
	* config/alpha/alpha.c (input_operand): Likewise.
	* config/arm/arm.c (THUMB_LEGITIMATE_CONSTANT_P): Likewise.
	* config/c4x/c4x.c (const_operand): Likewise.
	* config/cris/cris.c (cris_gotless_symbol,
	cris_got_symbol): Likewise.
	* config/frv/frv.h (LEGITIMATE_PIC_OPERAND_P): Likewise.
	* config/ia64/ia64.c (gr_reg_or_5bit_operand,
	gr_reg_or_6bit_operand, gr_reg_or_8bit_operand,
	gr_reg_or_8bit_adjusted_operand,
	gr_reg_or_8bit_and_adjusted_operand,
	gr_reg_or_14bit_operand, gr_reg_or_22bit_operand,
	shift_count_operand, shift_32bit_count_operand): Likewise.
	* config/m32r/m32r.c (move_src_operand): Likewise.
	* config/mips/mips.c (mips_const_insns): Likewise.
	* config/mmix/mmix.c (mmix_constant_address_p): Likewise.
	* config/pa/pa.c (move_src_operand): Likewise.
	* config/rs6000/rs6000.c (input_operand): Likewise.
	* config/sparc/sparc.c (input_operand): Likewise.
	* config/v850/v850.c (movsi_source_operand): Likewise.
	* config/xtensa/xtensa.c (move_operand,
	xtensa_emit_move_sequence): Likewise.
	* config/ia64/ia64.h (PREDICATE_CODES): Do not mention CONSTANT_P_RTX.
	* config/pa/pa.h (PREDICATE_CODES): Likewise.

2004-03-16  Diego Novillo  <dnovillo@redhat.com>

	* tree-dump.c (struct dump_option_value_info): Add TDF_UID.
	* tree.h (TDF_UID): Define.
	* doc/invoke.texi: Document -ftree-dump-...-uid.
	* tree-pretty-print.c (debug_generic_expr): Add TDF_UID.
	(debug_generic_stmt): Likewise.
	(dump_decl_name): New function.
	(dump_generic_node): Call it.
	(print_declaration): Add new argument 'flags'.  Update all users.
	(print_struct_decl): Likewise.
	* tree-alias-ander.c, tree-cfg.c, tree-dfa.c, tree-mudflap.c,
	tree-nrv.c, tree-sra.c, tree-ssa-alias.c, tree-ssa-ccp.c,
	tree-ssa-copy.c, tree-ssa-dom.c, tree-ssa-dse.c,
	tree-ssa-forwprop.c, tree-ssa-operands.c, tree-ssa-pre.c,
	tree-ssa.c, tree-tail-call.c: Call print_generic_* with
	'dump_flags'.

2004-03-16  Dale Johannesen  <dalej@apple.com>

	* Makefile.in (tree-ssa-phiopt.o): add langhooks.h dependency.
	(tree-nrv.o): Ditto.
	(tree-ssa-copy.o): Ditto.
	(tree-ssa-dom.o): Ditto.
	(tree-ssa-ccp.o): Ditto.
	* c-common.c: Add #include hashtab.h.
	(c_type_hash): New.
	(c_common_get_alias_set): Handle multiple type nodes referring
	to "the same" type, currently for C90 only.
	* c-decl.c (current_file_decl): Move to toplev.c.
	* c-lang.c (LANG_HOOKS_TYPES_COMPATIBLE_P): Define to
	c_types_compatible_p.
	(c_types_compatible_p): New.
	* c-tree.h (c_types_compatible_p): New declaration.
	* c-typeck.c (tagged_types_tu_compatible_p): Allow for
	compiler-generated TYPE_DECLs without a DECL_ORIGINAL_TYPE.
	* gimplify.c (canonicalize_addr_expr): Use types_compatible_p langhook.
	(cpt_same_type): Ditto.
	* langhooks-def.h (lhd_types_compatible_p): New declaration.
	LANG_HOOKS_TYPES_COMPATIBLE_P: New.
	* langhooks.c (lhd_types_compatible_p): New.
	* langhooks.h (struct lang_hooks): Add types_compatible_p.
	* stmt.c (tail_recursion_args): Use types_compatible_p langhook.
	* toplev.c (current_file_decl): New, moved from c-decl.c.
	* tree-nrv.c: Include langhooks.h.
	(tree_nrv): Use types_compatible_p langhook.
	* tree-ssa-ccp.c: Include langhooks.h.
	(maybe_fold_offset_to_array_ref): Use types_compatible_p langhook.
	(maybe_fold_offset_to_component_ref): Ditto (2 places).
	(fold_stmt_r): Make sure rhs of COMPONENT_REF is in lhs type.
	* tree-ssa-copy.c: Include langhooks.h.
	(cprop_into_stmt): Use types_compatible_p langhook.
	* tree-ssa-dom.c: Include langhooks.h.
	(avail_expr_p): Use types_compatible_p langhook.
	* tree-ssa-phiopt.c: Include langhooks.h.
	(conditional_replacement): Use types_compatible_p langhook.
	* tree-ssa.c (tree_ssa_useless_type_conversion_1): Use
	types_compatible_p langhook.
	* tree.h (current_file_decl): New declaration.

2004-03-16  Dale Johannesen  <dalej@apple.com>

	PR optimization/14498
	* gimplify.c (copy_if_shared_r): Mark VA_ARGS_EXPRs as volatile.
	(mark_decls_volatile_r): Moved higher in file (unchanged).

2004-03-16  Daniel Berlin  <dberlin@dberlin.org>

	PR optimization/14562
	* tree-ssa-pre.c (generate_expr_as_of_bb): Don't use names_match_p.
	(generate_vops_as_of_bb): Ditto.

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

	PR optimization/14553
	* tree-ssa.c (replace_immediate_uses): Call propagate_value to
	update operands.

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

	* tree-alias-common.c (create_alias_vars): Add #if
	HAVE_BANSHEE around test for PTA_ANDERSEN.

2004-03-11  Diego Novillo  <dnovillo@redhat.com>

	* tree-dfa.c (struct walk_state): Remove fields 'is_store' and
	'is_indirect_ref'.  Update all users.
	* tree-flow.h (struct var_ann_d): Remove fields 'is_stored',
	'is_dereferenced_store' and 'is_dereferenced_load'.  Update
	all users.
	* tree-simple.c (get_base_address): Handle BIT_FIELD_REF.
	* tree-ssa-alias.c (struct alias_info): Add fields
	'written_vars', 'dereferenced_ptrs_store' and
	'dereferenced_ptrs_load'.
	(init_alias_info): Initialize them.
	(delete_alias_info): Free them.
	(find_ptr_dereference): New.
	(ptr_is_dereferenced_by): Call it.
	Add new argument 'is_store'.  Set to true if the
	expression is an indirect store operation.
	(compute_points_to_and_addr_escape): If the statement
	makes a store, load or write operation, update the
	corresponding bitmap.
	(compute_flow_insensitive_aliasing): Test the
	'written_vars' bitmap to determine if alias sets should
	be computed.
	(setup_pointers_and_addressables): Always assume that
	volatile pointers and hidden pointers have been used in a
	memory store operation.
	* tree-ssa-operands.c (add_stmt_operand): Do add an
	operand for may-aliased variables before computing
	aliases.

2004-03-11  Zdenek Dvorak  <rakdver@atrey.karlin.mff.cuni.cz>

	* tree-optimize.c (init_tree_optimization_passes): Move
	pass_tail_recursion and pass_ch after pass_may_alias.
	* tree-ssa-loop.c (mark_defs_for_rewrite): Mark type tags
	for rewriting.
	* tree-ssa.c (mark_def_sites): Process the operand of a
	VDEF before the result.

2004-03-11  Richard Henderson  <rth@redhat.com>

	PR 14204
	* tree-ssa.c (warn_uninit): Don't warn for hard register variables.

2004-03-10  Richard Henderson  <rth@redhat.com>

	* tree-simple.c (get_base_var, get_base_decl): Remove.
	* tree-simple.h: Likewise.
	* tree-dfa.c (discover_nonconstant_array_refs_r): Use get_base_address.
	* tree-ssa-alias.c (ptr_is_dereferenced_by): Likewise.
	(add_pointed_to_var, is_escape_site): Likewise.
	* tree-ssa-ccp.c (get_default_value): Expect only SSA_NAME and DECLs.
	* tree-ssa-operands.c (add_stmt_operand): Likewise.
	(note_addressable): Use get_base_address.
	* tree-ssa-dce.c (need_to_preserve_store): Expect only SSA_NAME.
	* tree-ssa.c (set_is_used): Inline get_base_decl.

2004-03-10  Richard Henderson  <rth@redhat.com>

	* tree-nested.c (convert_nonlocal_reference): Clear TREE_INVARIANT
	on modified ADDR_EXPRs.

2004-03-10  Andrew Pinski  <apinski@apple.com

	PR c/14475
	* c-decl.c (check_bitfield_type_and_width): Check for null
	lang_type_specific when check the precision of an enum.

2004-03-09  Andrew Pinski  <apinski@apple.com>

	* Makefile.in (tree-ssa-forwprop.o): Fix the dependences.

2004-03-09  Jeff Law  <law@redhat.com>

	* tree-flow-inline.h (may_propagate_copy): Do not allow propagation of
	a constant for a virtual operand.

2004-03-08  Richard Henderson <rth@redhat.com>

	* calls.c (initialize_argument_information): Add
	parameter may_tail_call.  Set to false for invisible
	pass-by-reference arguments that require stack
	allocation.
	Update all users.

2004-03-07  Jeff Law  <law@redhat.com>

	* tree-ssa-dom.c: (get_eq_expr_value): Fix typo when comparing a
	boolean against a constant.
	* tree-ssa-forwprop.c (record_single_argument_cond_exprs): Do not
	record the same SSA_NAME more than once.  Only record the SSA_NAME
	tested, not the COND_EXPR.
	(substitute_single_use_vars): Substitute booleans which are
	set from a TRUTH_NOT_EXPR even if they have more than one use site.

2004-03-05  Jeff Law  <law@redhat.com>

	* tree-ssa-dce.c (remove_dead_stmt): Clear PENDING_STMT after
	redirect_edge_and_branch call.

	* tree-ssa-forwprop.c (record_single_argument_cond_exprs): Also
	record COND_EXPRs with single use vars defined by SSA_NAME + CONST
	expressions.
	(substitute_single_use_vars): Corresponding changes to rewrite
	COND_EXPRs using single use vars defined by SSA_NAME + CONST
	expressions.

2004-03-05  Ulrich Weigand  <uweigand@de.ibm.com>

	* config/s390/s390.c (s390_expand_movstr): Do not use
	expand_exit_loop_top_cond, manually copy loop header.
	(s390_expand_clrstr): Likewise.
	(s390_expand_cmpmem): Likewise.

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

	* tree-ssa-alias.c (compute_flow_sensitive_aliasing): If
	a name tag has been marked call-clobbered, also mark the
	corresponding type tag.

2004-03-04  Zdenek Dvorak  <rakdver@atrey.karlin.mff.cuni.cz>

	* tree-ssa-loop-live.c (coalesce_tpa_members): Update the root
	variable of the partition.

2004-03-04  Jeff Law  <law@redhat.com>

	* tree-ssa-dce.c (remove_dead_stmt): Redirect an existing edge
	rather than deleting the old ones and creating a new one when
	removing a dead conditional.

	* fold-const.c (fold): When rebuilding the expression after a
	call to fold_relational_hi_lo, make sure to convert the type of
	the second argument to the type of the first.

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

	* cgraphunit.c (cgraph_optimize): Do not do memory release
	check if there have been errors.

2004-03-03  Jeff Law  <law@redhat.com>

	* tree-ssa-phiopt.c (conditional_replacement): Clear EDGE_TRUE_VALUE
	and EDGE_FALSE_VALUE on the remaining edge after eliminating a PHI.

2004-03-03  Andrew MacLeod  <amacleod@redhat.com>

	* tree-ssa-copyrename.c (gate_copyrename): Really check it in.
	* tree-ssa.c (create_temp): Use DECL_ARTIFICIAL from original decl.

2004-03-02  Zdenek Dvorak  <rakdver@atrey.karlin.mff.cuni.cz>

	* tree-tailcall.c (struct tailcall): Remove return_block and return_bsi
	fields, add m and a fields.
	(m_acc, a_acc): New.
	(find_tail_calls): Find tail calls on whose results simple operations
	are performed.
	(independent_on_stmt_p, process_assignment,
	propagate_through_phis, adjust_accumulator_values,
	adjust_return_value): New.
	(eliminate_tail_call): Update the accumulators if needed.
	(optimize_tail_call): Do not create phis.
	(tree_optimize_tail_calls): Create phis and accumulators as needed.
	Adjust return values.

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

	* tree-ssa-operands.c (get_expr_operands): Mark CALL_EXPRs
	with has_volatile_ops if aliases haven't been computed yet.
	(add_stmt_operand): Use 'true' instead of '1'.

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

	PR optimization/14266
	* tree-ssa-alias.c (create_global_var): Mark GLOBAL_VAR for
	renaming.

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

	* tree.c (associative_tree_code): Remove MINUS_EXPR, LSHIFT_EXPR,
	RSHIFT_EXPR.
	* tree-ssa-dom.c (simplify_rhs_and_lookup_avail_expr): Use
	is_gimple_min_invariant and is_gimple_var.  Handle minus_expr
	specially.

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

	* cfgbuild.c (rtl_make_eh_edge): Rename from make_eh_edge.
	* basic-block.h, except.c: Update decl and uses.

2004-03-01  Frank Ch. Eigler  <fche@redhat.com>

	* doc/passes.texi: Add information about mudflap.

2004-03-01  Andrew Pinski  <pinskia@physics.uc.edu>

	PR middle-end/13066
	* fold-const (fold): Call fold_convert when building
	a TRUTH_*_EXPR tree.

2004-03-01  Andrew MacLeod  <amacleod@redhat.com>

	* common.opt : Add tree-copyrename option. Remove duplicate tree-sra.
	* flags.h (flag_tree_copyrename): Declare.
	* opts.c (decode_options): Turn copyrename on by default at -O.
	(common_handle_option): Handle -ftree-copyrename.
	* toplev.c (flag_tree_copyrename): Declare.
	* tree-ssa-copyrename.c (gate_copyrename): New.  Check flag.
	(pass_rename_ssa_copies): Initialize with gated routine.
	(lang_independent_options f_): Add tree-copyrename.
	* doc/invoke.texi: Add -fdump-tree-copyrename and  -ftree-copyrename.
	* doc/passes.texi: Add blurb for copy renaming.

2004-03-01  Jeff Law  <law@redhat.com>

	* tree-ssa-dom.c (true_false_expr_hash): Update comments slightly.
	(true_false_expr_eq): Update comments slightly.  Avoid using
	operand_equal_p, instead check the code and operands directly.

2004-03-01  Andrew MacLeod  <amacleod@redhat.com>

	* Makefile.in (tree-ssa-copyrename.o): New object.
	* timevar.def (TV_TREE_COPY_RENAME): New time variable.
	* tree-optimize.c (init_tree_optimization_passes): Add copy rename
	pass.
	* tree-pass.h (pass_rename_ssa_copies): New pass structure.
	* tree-sra.c (lookup_scalar): Copy DECL_ARITIFICIAL flag from base.
	* tree-ssa-copyrename.c : New file.
	(copy_rename_partition_coalesce): Coalesce partitions for renaming.
	(rename_ssa_copies): Find renamable copies.
	(pass_rename_ssa_copies): Initialize.
	* tree-ssa-live.c (register_ssa_partition): Move to tree-ssa-live.h.
	* tree-ssa-live.h (register_ssa_partition): Moved from tree-ssa-live.c.

2004-02-29  David Edelsohn  <edelsohn@gnu.org>

	* doloop.c (doloop_optimize): Increment n_iterations if loop->top
	present.

2004-02-29  Diego Novillo  <dnovillo@redhat.com>

	* gimple-low.c (pass_remove_useless_vars): Add TODO_dump_func.

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

	PR middle-end/14310
	* explow.c (emit_stack_save): Remove savearea mode check.

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

	* builtins.c (simplify_builtin_strcmp): Don't export.  Remove
	length parameters.  Remove conversion to memcmp.
	(simplify_builtin_strncmp): Likewise.
	* expr.h: Don't declare them.
	* tree-ssa-ccp.c (ccp_fold_builtin): Don't call them.

2004-02-27  Dale Johannesen  <dalej@apple.com>

	* tree-cfg.c (cleanup_control_expr_graph): Prevent edge
	probability from overflowing due to roundoff errors.

2004-02-27  Jeff Law  <law@redhat.com>

	* tree-cfg.c (verify_expr): Do not walk down into types.
	Expand checking to verify that unary/binary operators have
	gimple operands.
	* tree-ssa-ccp.c (ccp_fold_builtin, case BUILT_IN_STRLEN): Do not
	create non-gimple code.  Similarly for BUILTIN_IN_STRCPY and
	BUILT_IN_STRNCPY.
	* tree-ssa-phiopt.c (conditional_replacement): Do not create
	non-gimple code.
	* tree-ssa-dom.c (simplify_rhs_and_lookup_avail_expr): Likewise.

	* tree-simple.c (is_gimple_min_invariant): Subtraction of a
	constant from a constant pointer is a gimple invariant as well.
	* tree-ssa-operands.c (get_expr_operands): Handle subtraction
	of a constant from a constant pointer too.

	* fold-const.c (fold): Tighten test for optimizing an equality
	comparison of the address of two variables.

	* tree-inline.c (setup_one_parameter): Improve test for when we
	need to gimplify the initialization statements.

2004-02-27  Diego Novillo  <dnovillo@redhat.com>

	PR optimization/14312
	* tree-pretty-print.c (dump_generic_node): Mark tail calls.
	* tree-ssa-alias.c (compute_may_aliases): Restore call to
	dump_referenced_vars.
	(compute_points_to_and_addr_escape): If the address of a
	variable V is stored into a non-pointer variable, mark V as
	call-clobbered.
	* tree-tailcall.c (suitable_for_tail_opt_p): Check for
	call-clobbered instead of TREE_ADDRESSABLE.
	Ignore memory tags.
	(optimize_tail_call): Add newline to dump output.

2004-02-27  Diego Novillo  <dnovillo@redhat.com>

	PR optimization/13347
	* tree-sra.c (scalarize_structure_assignment): Use STRIP_NOPS
	instead of STRIP_USELESS_TYPE_CONVERSION to remove type casts
	from RHS of the assignment.

	* tree-ssa.c (tree_ssa_useless_type_conversion_1): Reformat
	and rephrase comments.
	* tree.h (STRIP_USELESS_TYPE_CONVERSION): Reformat comment.

2004-02-26  Zdenek Dvorak  <rakdver@atrey.karlin.mff.cuni.cz>

	* tree-cfg.c (tree_redirect_edge_and_branch_1): Allow to redirect
	RETURN_EXPR branches.

2004-02-26  Jeff Law  <law@redhat.com>

	* tree-nrv.c (tree_nrv): Only perform NRV optimization when the
	return value lives in memory.

	* tree-ssa-dom.c (simplify_rhs_and_lookup_avail_expr): If an
	operand is unsigned, then we can eliminate more ABS expressions
	and turned div/mod expression into shift/and expressions.

	* fold-const.c (fold): An equality comparison of the address of
	two non-weak variables has known compile-time result.

2004-02-26  Andrew Pinski  <pinskia@physics.uc.edu>

	* tree-ssa-phiopt.c (conditional_replacement):
	s/tree_dump_flags/dump_flags/.

	* tree-ssa-phiopt.c (tree_ssa_phiopt): Split into ...
	(conditional_replacement): Here.

2004-02-26  Andrew MacLeod  <amacleod@redhat.com>

	* tree-ssa.c (find_replaceable_in_bb): Don't repalce expressions in
	volatile statements.

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

	PR opt/14288
	* gimplify.c (gimple_push_cleanup): Add VAR argument.  Set
	TREE_NO_WARNING if in a conditional context.
	(gimplify_target_expr): Pass new argument.
	* tree-sra.c (lookup_scalar): Copy TREE_NO_WARNING to replacement.

2004-02-24  Kazu Hirata  <kazu@cs.umass.edu>

	* doc/invoke.texi: Replace -fdump-tree-all-ssa with
	-fdump-tree-all.

2004-02-24  Kazu Hirata  <kazu@cs.umass.edu>

	PR target/14285
	* config/arm/arm.c (arm_compute_func_type): Replace
	"current_function_needs_context" with "cfun->static_chain_decl
	!= NULL".
	(arm_compute_initial_elimination_offset): Likewise.
	* config/h8300/h8300.c (h8300_emit_stack_adjustment):
	Likewise.
	* config/sh/sh.c (output_stack_adjust): Likewise.
	(sh5_schedule_saves): Likewise.
	* config/xtensa/xtensa.c (compute_frame_size): Likewise.

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

	* c-simplify.c (c_genericize): s/dump_flags/local_dump_flags/.
	* predict.c, tree-alias-ander.c, tree-cfg.c, tree-nrv.c,
	tree-optimize.c, tree-pass.h, tree-sra.c, tree-ssa-alias.c,
	tree-ssa-ccp.c, tree-ssa-copy.c, tree-ssa-dce.c, tree-ssa-dom.c,
	tree-ssa-dse.c, tree-ssa-forwprop.c, tree-ssa-loop.c,
	tree-ssa-phiopt.c, tree-ssa-pre.c, tree-ssa.c, tree-tailcall.c:
	s/tree_dump_flags/dump_flags/.

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

	* predict.c, tree-alias-ander.c, tree-cfg.c, tree-mudflap.c,
	tree-nrv.c, tree-optimize.c, tree-pass.h, tree-profile.c, tree-sra.c,
	tree-ssa-alias.c, tree-ssa-ccp.c, tree-ssa-copy.c, tree-ssa-dce.c,
	tree-ssa-dom.c, tree-ssa-dse.c, tree-ssa-forwprop.c, tree-ssa-loop.c,
	tree-ssa-operands.c, tree-ssa-phiopt.c, tree-ssa-pre.c, tree-ssa.c,
	tree-tailcall.c: s/tree_dump_file/dump_file/g.

2004-02-24  Diego Novillo  <dnovillo@redhat.com>

	* doc/tree-ssa.texi: Fix formatting mark ups.

2004-02-24  Jeff Law  <law@redhat.com>

	* gimple-low.c (remove_useless_vars): Now static.
	(pass_remove_useless_vars): New.
	* tree-flow.h (remove_useless_vars): Remove prototype.
	* tree-nrv.c (struct nrv_data): Remove visited hashtable.
	(finalize_nrv_r): Do not descend into types. No need to update
	the visited hashtable.
	(tree_nrv): No need to allocate/free the visited hashtable.
	Clear the used flag on the variable's annotation.
	* tree-optimize.c (init_tree_optimizatio_passes): Link in
	pass_remove_useless_vars.
	* tree-pass.h (pass_remove_useless_vars): Declare.
	* tree-ssa.c (rewrite_out_of_ssa): Do not remove useless vars here.

	* Makefile.in (OBJS-common): Add tree-nrv.o.
	(tree-nrv.o): Add dependencies.
	* timevar.def (TV_TREE_NRV): New timevar.
	* tree-nrv.c: New file implementing NRV on generic trees.
	* tree-optimize.c (init_tree_optimization_passes): Link in
	tree_nrv optimization pass.
	* tree-pass.h (tree_nrv): Declare.
	* doc/invoke.texi: Add -fdump-tree-nrv documentation.

2004-02-24  Sebastian Pop  <sebastian.pop@cri.ensmp.fr>

	* tree-flow.h (walk_use_def_chains_fn): Return a boolean.
	True for stopping the use-def walk, false otherwise.
	* tree-ssa-alias.c (collect_points_to_info_r): Same.
	Always return false, and never stopping the def-use walk as before.
	* tree-ssa.c (walk_use_def_chains_1): Stop when the result of the
	callback function is true.
	* doc/tree-ssa.texi: Document the behavior of the callback
	function for walk_use_def_chains.

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

	* doc/passes.texi: Rewrite.

2004-02-23  Diego Novillo  <dnovillo@redhat.com>

	* Makefile.in (TEXI_GCCINT_FILES): Add cfg.texi and tree-ssa.texi
	* tree-ssa-alias.c (compute_may_aliases): Update documentation.
	* doc/gccint.texi: Add node for Tree SSA documentation.
	Include tree-ssa.texi.
	* doc/tree-ssa.texi: New file.

2004-02-23  Dale Johannesen <dalej@apple.com>

	* config/rs6000/rs6000.md:  Roll in changes from mainline:
	(movdf_softfloat64):  Add POWER form of nop.
	(movsf_hardfloat): Ditto, and accept CTR-to-CTR copy.
	(movdf_hardfloat64):  Ditto.

2004-02-23  Jeff Law  <law@redhat.com>

	* ggc-page.c (struct page_entry): New field PREV.
	(ggc_alloc): Update PREV field appropriately.
	(sweep_pages): Likewise.
	(ggc_free): Likewise.  Use PREV field rather than loop to
	improve ggc_free performance.

	* Makefile.in (OBJC-common): Add tree-ssa-copy.o.
	(tree-ssa-copy.o): Add dependencies.
	* tree-flow.h (propagate_value, replace_exp): Prototype.
	(cprop_into_stmt, cprop_into_successor_phis): Likewise.
	* tree-ssa-copy.c: New file, most functions copied from tree-ssa-dom.c
	(cprop_into_stmt): Handle pointer & reference types better.
	* tree-ssa-dom.c (opt_stats_d): Kill uninteresting stats.
	(dump_dominator_optimization_stats): Corresponding changes.
	(cprop_into_stmt): Moved into tree-ssa-copy.c.
	(propagate_value): Likewise.
	(cprop_into_phis): Simplify using code fromi tree-ssa-copy.c.
	(optimize_stmt): Pass additional argument to cprop_into_stmt.
	* tree-ssa-pre.c (generate_expr_as_of_bb): Use replace_exp.
	(generate_vops_as_of_bb): Similarly.

2004-02-21  Jan Hubicka  <jh@suse.cz>

	* cgraphunit.c (decide_is_function_needed): Nested functions of extern
	inline functions don't need to be output.
	(expand_function): Re-enable sanity check.

2004-02-21  Zdenek Dvorak  <rakdver@atrey.karlin.mff.cuni.cz>

	* tree-ssa-loop.c (do_while_loop_p): New function.
	(copy_loop_headers): Do not peel do-while loops.

2004-02-21  Jan Hubicka  <jh@suse.cz>

	* tree-cfg.c (cleanup_control_expr_graph): Update profile.

	* tree-cfg.c (disband_implicit_edges): Set fallthru edges correctly.

	* cfg.c (dump_flow_info): Work on trees too.

	* tree-pretty-print.c (dump_generic_bb_stuff):  Do not touch bb
	annotations when not allocated.

2004-02-21  Jeff Law  <law@redhat.com>

	* tree-ssa-dom.c (cprop_into_stmt): Look at the type's main variant
	to determine if the two operands of a copy have equivalent types.

2004-02-20  Jeff Law  <law@redhat.com>

	* tree-flow-inline.h (may_propagate_copy): Do not perform ABNORMAL_PHI
	and DECL_HARD_REGISTER tests on virtual operands.
	* tree-flow.h (propagate_copy): Kill prototype.
	(propagate_value): New prototype.
	* tree-ssa-dom.c (propagate_copy): Now static.
	(propagate_value): No longer static.

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

	PR middle-end/14218
	* c-simplify.c (mark_labels_r): Move to ...
	* gimplify.c (force_labels_r): ... here, and rename.
	(gimplify_init_constructor): Invoke it.
	* tree-simple.h (force_labels_r): Declare.

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

	PR opt/14194
	* tree-ssa-ccp.c (substitute_and_fold): Also mark new vars
	if fold_stmt was successful.

2004-02-20  Diego Novillo  <dnovillo@redhat.com>

	* doc/invoke.texi: Add documentation for parameters
	global-var-threshold and max-aliased-vops.
	* params.def (PARAM_GLOBAL_VAR_THRESHOLD): Reformat help message.
	(PARAM_MAX_ALIASED_VOPS): Rename from PARAM_MAX_ALIAS_SET_SIZE.
	* params.h (MAX_ALIASED_VOPS): Rename from MAX_ALIAS_SET_SIZE.
	Update all users.
	* tree-ssa-alias.c (struct alias_map_d): Document fields.
	Add fields total_alias_vops, grouped_p and may_aliases.
	(struct alias_info): Change fields addressable_vars and
	pointers to malloc'd arrays.  Update all users.
	Add fields num_references and total_alias_vops.
	(compute_may_aliases): Add more comments.
	(init_alias_info): Initialize new fields in struct alias_info.
	(delete_alias_info): Corresponding changes.
	(compute_points_to_and_addr_escape): Count references to
	potentially aliased variables and pointer dereferences.
	(compute_flow_insensitive_aliasing): Remove old grouping
	heuristic.
	Count the number of virtual operands induced by all the alias
	sets created and call group_aliases if the number exceeds the
	threshold set by --param max-aliased-vops.
	(total_alias_vops_cmp): New.
	(group_aliases_into): New.
	(group_aliases): New.
	* tree-ssa-operands.c (get_expr_operands): Change dump file
	message when no flow-sensitive alias information is available.
	(add_stmt_operand): Reformat comment.
	* tree-ssa.c (init_tree_ssa): Don't call bitmap_clear.

	* tree-simple.c (get_base_decl): Fix typo in comment.

	* tree-pretty-print.c (print_call_name): Handle matrices of
	function pointers.

2004-02-20  Zdenek Dvorak  <rakdver@atrey.karlin.mff.cuni.cz>

	* Makefile.in (tree-ssa-loop.o): Add tree-inline.h dependency.
	* basic-block.h (struct reorder_block_def): Moved from cfglayout.h.
	(alloc_rbi_pool, initialize_bb_rbi, free_rbi_pool): New.
	* bb-reorder.c (copy_bb): Use cfghooks for bb duplication.
	* cfg.c (rbi_pool): New variable.
	(alloc_rbi_pool, free_rbi_pool, initialize_bb_rbi): New functions.
	* cfghooks.c (can_duplicate_block_p, duplicate_block): New functions.
	* cfghooks.h (struct cfg_hooks): Add can_duplicate_block_p and
	duplicate_block hooks.
	(can_duplicate_block_p, duplicate_block): Declare.
	* cfglayout.c (cfg_layout_pool, cfg_layout_initialize_rbi): Removed.
	(fixup_reorder_chain): Use initialize_bb_rbi.
	(cfg_layout_can_duplicate_bb_p, cfg_layout_duplicate_bb): Hookized.
	(cfg_layout_initialize): Use cfg.c rbi pool manipulation functions.
	(can_copy_bbs_p, copy_bbs): Use cfghooks for bb duplication.
	* cfglayout.h (typedef struct reorder_block_def): Moved to
	basic_block.h.
	(cfg_layout_can_duplicate_bb_p, cfg_layout_duplicate_bb): Declaration
	removed.
	* cfgrtl.c (cfg_layout_create_basic_block): Use initialize_bb_rbi.
	(rtl_cfg_hooks, cfg_layout_rtl_cfg_hook): Fill in can_duplicate_block_p
	and duplicate_block fields.
	* common.opt (ftree-ch): Add.
	* flags.h (flag_tree_ch): Declare.
	* jump.c (next_nonnote_insn_in_loop, duplicate_loop_exit_test,
	copy_loop_headers): Removed.
	* loop-unswitch.c (unswitch_loop): Use cfghooks for bb duplication.
	* opts.c (decode_options): Enable flag_tree_ch at -O1.
	(common_handle_option): Handle -ftree_ch.
	* rtl.h (copy_loop_headers): Declaration removed.
	* timevar.def (TV_TREE_CH): New.
	* toplev.c (flag_tree_ch): New.
	(rest_of_compilation): Do not call copy_loop_headers.
	* tracer.c (tail_duplicate): Use cfghooks for bb duplication.
	* tree-cfg.c (build_tree_cfg): Call alloc_rbi_pool.
	(create_bb): Call initialize_bb_rbi.
	(delete_tree_cfg): Call free_rbi_pool.
	(tree_duplicate_bb): Hookize.
	(tree_can_duplicate_bb_p): New.
	(tree_cfg_hooks): Fill in can_duplicate_block_p and duplicate_block
	fields.
	* tree-flow.h (tree_duplicate_bb): Declaration removed.
	* tree-optimize.c (init_tree_optimization_passes): Add pass_ch.
	* tree-pass.h (pass_ch): Declare.
	* tree-ssa-loop.c: Include tree-inline.h.
	(call_expr_p, should_duplicate_loop_header_p, mark_defs_for_rewrite,
	duplicate_blocks, copy_loop_headers, gate_ch): New functions.
	(pass_ch): New.
	* doc/invoke.texi (-fdump-tree-ch, -ftree-ch): Document.

2004-02-19  David Edelsohn  <edelsohn@gnu.org>

	* config/rs6000/aix.h (MFWRAP_SPEC): Define.
	(MFLIB_SPEC): Define.

2004-02-19  Jeff Law  <law@redhat.com>

	* tree-ssa-phiopt.c (tree_ssa_phiopt): TRUTH_NOT_EXPR is valid
	gimple code.

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

	* tree-cfg.c (cleanup_dead_labels): New function to remove
	redundant labels.

	Remove the RTL inliner.
	* calls.c (try_to_integrate): Remove.
	(expand_call): Do not try to expand calls inline.
	* dbxout.c (dbxout_symbol_location): Don't mention integrate.c
	in comments.
	* expmed.c (extract_fixed_bit_field): Always propagate the
	target for the shift if it is a REG.
	* expr.c (emit_move_insn_1): Don't generate inline warnings.
	(expand_expr_real_1): Don't look at inline_function_decl.
	Don't output inlined functions here.
	* expr.h (expand_inline_function): Remove prototype.
	* emit-rtl.c (copy_most_rtx): Don't copy the integrated flag.
	Copy the new return_val flag.
	* final.c (final): Don't look at RTX_INTEGRATED_P.
	* cfgrtl.c (create_basic_block_structure): Likewise.
	* haifa-sched.c (priority): Likewise.
	(restore_line_notes): Likewise.
	* function.c (inline_function_decl): Remove.
	(put_var_into_stack): Don't use it.
	(fix_lexical_addr): Likewise.
	* function.c (inline_function_decl): Remove extern declaration.
	* genattrtab.c (ATTR_PERMANENT_P): Use the return_val flag
	instead of the integrated flag.
	* integrate.c (INTEGRATE_THRESHOLD): Remove.
	(setup_initial_hard_reg_value_integration): Likewise.
	(initialize_for_inline): Likewise.
	(note_modified_parmregs): Likewise.
	(integrate_parm_decls): Likewise.
	(process_reg_param): Likewise.
	(save_parm_insns): Likewise.
	(copy_insn_list): Likewise.
	(copy_insn_notes): Likewise.
	(compare_blocks): Likewise.
	(find_block): Likewise.
	(inlining): Likewise.
	(function_cannot_inline_p): Likewise.
	(parmdecl_map): Likewise.
	(in_nonparam_insns): Likewise.
	(save_for_inline): Likewise.
	(FIXED_BASE_PLUS): Likewise.
	(expand_inline_function): Likewise.
	(copy_rtx_and_substitute): Don't look at map->integrating,
	map->inline_target, and inlining, since we are never copying
	for integrating.
	Don't abort on RTX_INTEGRATED_P.
	(old_fun): Remove.
	(output_inline_function): Remove.
	* integrate.h (struct inline_map): Remove fields integrating,
	block_map, leaf_reg_map, inline_target, and local_return_label.
	* print-rtl.c (print_rtx): Don't print the integrated flag.
	Print the return_val flag.
	* rtl.h (struct rtx_def): Replace the integrated flag with the
	return_val flag.
	(RTX_INTEGRATED_P): Remove.
	(notice_rtl_inlining_of_deferred_constant): Remove prototype.
	* stmt.c (force_label_rtx): Don't look at inline_function_decl.
	* toplev.c (rest_of_handle_inlining): Remove.
	(rest_of_compilation): Don't call it, and never jump to exit.
	Call convert_from_eh_region_ranges.
	(wrapup_global_declarations): Don't output nested inlined functions.
	* tree.h (function_cannot_inline_p): Remove prototype.
	(save_for_inline): Ditto.
	(output_inline_function): Ditto.
	* unroll.c (unroll_loop): Don't clear map->inline_target.
	* varasm.c (notice_rtl_inlining_of_deferred_constant): Remove.

	* system.h: Poison INTEGRATE_THRESHOLD.
	* config/avr/avr.h: Remove define.
	* config/ip2k/ip2k.h: Likewise.

	* unwind-sjlj.c (uw_install_context): Make a proper static inline
	function.

	* doc/rtl.texi: Remove references to the integrated flag.
	* doc/tm.texi: Remove documentation of INTEGRATE_THRESHOLD.

2004-02-17  Andrew Macleod  <amacleod@redhat.com>

	* tree-ssa-live.c (coalesce_tpa_members): Don't coalesce partitions
	which are not in the same TPA group.
	* tree-ssa.c (rewrite_out_of_ssa): Coalesce via list first.

2004-02-17  Brian Booth  <bbooth@redhat.com>

	* tree-ssa-ccp.c (substitute_and_fold): Update stmt after
	calling fold_stmt.

2004-02-16  Andrew Pinski  <pinskia@physics.uc.edu>

	* config/rs6000/rs6000.c (output_function_profiler): Check
	cfun->static_chain_decl instead of current_function_needs_context.

2004-02-16  Jeff Law  <law@redhat.com>

	* tree-ssa.dse.c (dse_optimize_stmt): Dump info when we delete
	stores.

	* tree-ssa-dse.c: Update comments.

	* Makefile.in (OBJS-common): Add tree-ssa-dse.o
	(tree-ssa-dse.o): Add dependencies.
	* common.opt (ftree-dse): New option.
	* flags.h (flag_tree_dse): New.
	(flag_tree_dom): Fix comments.
	* opts.c (decode_options): Turn on flag_tree_dse.
	(common_handle_option): Handle  OPT_ftree_dse.
	* timevar.def (TV_TREE_PHIOPT): Update text.
	(TV_TREE_DSE): New timevar.
	* toplev.c (flag_tree_dse): New.
	(flag_tree_dom): Fix comments.
	(lang_independent_options): Add -ftree-dse.
	* tree-dfa.c (redirect_immediate_use): New function.
	(redirect_immediate_uses): New function.
	* tree-flow.h (stmt_ann_d): Add UID field.
	(redirect_immediate_uses): Declare.
	* tree-optimize.c (init_tree_optimization_passes): Link in DSE pass.
	* tree-pass.h (pass_dse): Declare.
	* tree-ssa-dse.c: New file implementing DSE.
	* doc/invoke.texi: Document new option.

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

	* tree-nested.c: New file.
	* Makefile.in (OBJS-common, GTFILES, tree-nested.o): Add it.
	* builtin-types.def (BT_FN_VOID_PTR_PTR, BT_FN_VOID_PTR_PTR_PTR): New.
	* builtins.c (expand_builtin_nonlocal_goto): New.
	(expand_builtin_apply): Fix prepare_call_address args.
	(round_trampoline_addr): Move from function.c.
	(expand_builtin_init_trampoline): New.
	(expand_builtin_adjust_trampoline): New.
	(expand_builtin): Invoke them.
	(build_function_call_expr): Add CALL_EXPR chain operand.
	* builtins.def (BUILT_IN_INIT_TRAMPOLINE,
	BUILT_IN_ADJUST_TRAMPOLINE, BUILT_IN_NONLOCAL_GOTO): New.
	* c-decl.c (finish_function): Call lower_nested_functions.
	(c_expand_decl): Don't declare_nonlocal_label.
	* calls.c (prepare_call_address): Replace fndecl arg with a
	precomputed static chain value.
	(expand_call): Precompute the static chain value.  Use
	update_nonlocal_goto_save_area.
	* cgraph.c (cgraph_mark_reachable_node): Don't force nested
	functions to be reachable.
	(cgraph_clone_node): Don't abort cloning functions containing
	nested functions.
	* cgraphunit.c (cgraph_assemble_pending_functions): Don't do
	anything special for nested functions.
	(cgraph_mark_functions_to_output): Likewise.
	(cgraph_estimate_growth, cgraph_clone_inlined_nodes): Likewise.
	(cgraph_optimize): Likewise.
	(cgraph_finalize_function): Don't zap DECL_SAVED_INSNS.
	(cgraph_expand_function): Allow functions to not be emitted.
	* defaults.h (TRAMPOLINE_ALIGNMENT): Move from function.c.
	* dwarf2out.c (gen_subprogram_die): Generate DW_AT_static_link.
	* emit-rtl.c (maybe_set_first_label_num): New.
	* explow.c (update_nonlocal_goto_save_area): New.
	(allocate_dynamic_stack_space): Use it.
	* expr.c (expand_expr_real_1) <LABEL_DECL>: Don't force_label_rtx.
	<COND_EXPR>: Ignore the possibility of non-local labels.
	<ADDR_EXPR>: Don't do trampoline_address.
	* expr.h (lookup_static_chain): Remove.
	(prepare_call_address): Update 2nd arg.
	(update_nonlocal_goto_save_area): Declare.
	* final.c (profile_function): Update static chain test.
	* function.c (TRAMPOLINE_ALIGNMENT): Move to defaults.h.
	(trampolines_created): Move to varasm.c.
	(free_after_compilation): Update for removed fields.
	(allocate_struct_function): Likewise.
	(delete_handlers, lookup_static_chain): Remove.
	(fix_lexical_addr): Don't consider non-local variable refs.
	(trampoline_address): Remove.
	(round_trampoline_addr): Move to builtins.c.
	(adjust_trampoline_addr): Remove.
	(expand_function_start): Update for changes to static chain
	and nonlocal goto handling.
	(initial_trampoline): Move to varasm.c.
	(expand_function_end): Don't build trampolines or kill
	unreferenced nonlocal goto labels.
	* function.h (struct function): Remove x_nonlocal_labels,
	x_nonlocal_goto_handler_slots, x_nonlocal_goto_stack_level,
	x_context_display, x_trampoline_list, needs_context.
	Add static_chain_decl, nonlocal_goto_save_area.
	* gimple-low.c (record_vars): Don't record functions.
	* gimplify.c (declare_tmp_vars): Export.
	(create_artificial_label): Set type.
	(gimplify_expr): Don't consider nonlocal gotos.
	* integrate.c (expand_inline_function): Kill lookup_static_chain ref.
	* jump.c (any_uncondjump_p): Reject nonlocal goto.
	* rtl.h (maybe_set_first_label_num): Declare.
	* stmt.c (label_rtx): Set LABEL_PRESERVE_P appropriately.
	(expand_label): Handle DECL_NONLOCAL and FORCED_LABEL.
	(declare_nonlocal_label): Remove.
	(expand_goto): Don't handle nonlocal gotos.
	(expand_nl_handler_label): Remove.
	(expand_nl_goto_receivers): Remove.
	(expand_end_bindings): Don't expand_nl_goto_receivers.  Use
	update_nonlocal_goto_save_area.
	* tree-cfg.c (make_edges): Handle abnormal edges out of block
	falling through to EXIT.
	(make_ctrl_stmt_edges): Don't check GOTO_EXPR for nonlocal goto.
	Handle computed goto with no destinations.
	(tree_can_merge_blocks_p): Don't merge blocks with nonlocal labels.
	(remove_useless_stmts_label, stmt_starts_bb_p): Likewise.
	(tree_forwarder_block_p): Likewise.
	(nonlocal_goto_p): Remove.
	(tree_verify_flow_info): Update to match.
	* tree-dump.c (dump_files): Add tree-nested.
	* tree-flow.h (nonlocal_goto_p): Remove.
	* tree-inline.c (setup_one_parameter): Split out from ...
	(initialize_inlined_parameters): ... here.  Handle static chain.
	(inline_forbidden_p_1): Update nonlocal goto check.
	(expand_call_inline): Disable mysterious cgraph abort.
	* tree-optimize.c (tree_rest_of_compilation): Save DECL_SAVED_INSNS.
	* tree-pretty-print.c (dump_generic_node): Print static chain
	and nonlocal label.
	* tree-simple.h (declare_tmp_vars): Declare.
	(lower_nested_functions): Declare.
	* tree-ssa-dom.c (propagate_value): Avoid sharing problems.
	* tree-ssa-operands.c (get_expr_operands): Walk static chain
	field of call_expr.
	* tree.def (CALL_EXPR): Add static chain operand.
	* tree.h (NONLOCAL_LABEL): Remove.
	(TDI_nested): New.
	* varasm.c (TRAMPOLINE_ALIGNMENT): Remove.
	(initial_trampoline): Move from function.c.
	(assemble_trampoline_template): Set and return it.
	(trampolines_created): Move from function.c.

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

	* tree-flow.h (cleanup_control_expr_graph): Don't declare here.
	* tree-cfg.c (cleanup_control_expr_graph): Make static.
	(find_edge_taken_cond_expr): Return an edge if the true and false
	edges of a branch lead to the same basic block.

2004-02-13  Diego Novillo  <dnovillo@redhat.com>

	* tree-phinodes.c (resize_phi_node): Do not use ggc_realloc to
	allocate a new PHI node.

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

	* tree-flow.h (kill_redundant_phi_nodes): Remove declaration.
	* tree-optimize.c (init_tree_optimization_passes): Add
	pass_redundant_phi after DOM and CCP.
	(execute_todo): Do not call kill_redundant_phi_nodes.
	* tree-pass.h (TODO_redundant_phi): Remove.
	Update all users.
	Adjust values for all the other TODO_* entries.
	(pass_redundant_phi): Declare.
	* tree-ssa.c (replace_immediate_uses): Call mark_new_vars_to_rename
	if a pointer was replaced.
	(kill_redundant_phi_nodes): Make static.
	(pass_redundant_phi): Define.

2004-02-12  Dale Johannesen  <dalej@apple.com>

	* Makefile.in (OBJS-common): Add rtl-profile.o, tree-profile.o.
	(profile.o): Add tree-flow.h dependency.
	(rtl-profile.o): New rule.
	(tree-profile.o): New rule.
	(GTFILES): Add tree-profile.c, rtl-profile.c.
	* basic-block.h (flow_call_edges_add): Remove.
	* cfganal.c (need_fake_edge_p): Move to cfgrtl.c.
	(flow_call_edges_add): Move to cfgrtl.c.
	* cfghooks.c: (block_ends_with_call_p): New.
	(block_ends_with_condjump_p): New.
	(flow_call_edges_add): New.
	* cfghooks.h: (struct cfg_hooks): add block_ends_with_call_p,
	block_ends_with_condjump_p, flow_call_edges_add.
	(block_ends_with_call_p): New declaration.
	(block_ends_with_condjump_p): New declaration.
	(flow_call_edges_add): New declaration.
	* cfgrtl.c (rtl_block_ends_with_call_p): New.
	(rtl_block_ends_with_condjump_p): New.
	(need_fake_edge_p): Moved from cfganal.c.
	(rtl_flow_call_edges_add): Moved from cfganal.c (flow_call_edges_add).
	(rtl_cfg_hooks): Add rtl_block_ends_with_call_p,
	rtl_block_ends_with_condjump_p, rtl_flow_call_edges_add.
	(cfg_layout_rtl_cfg_hooks): Ditto.
	* common.opt (ftree-based-profiling): New.
	* coverage.c (tree_ctr_tables): New.
	(coverage_counter_alloc): Use it.
	(build_ctr_info_value): Ditto.
	(coverage_counter_ref): Ditto.  Rename to rtl_coverage_counter_ref.
	(tree_coverage_counter_ref): New.
	* coverage.h (coverage_counter_ref): Remove declaration.
	(rtl_coverage_counter_ref): New declaration.
	(tree_coverage_counter_ref): New declaration.
	* opts.c (OPT_ftree_based_profiling): New.
	* profile.c: Include cfghooks.h, tree-flow.h.
	(profile_hooks): New.
	(profile_dump_file): New.
	(instrument_edges): Use hooks instead of RTL-specific code.
	(instrument_values): Ditto.
	(get_exec_counts): Ditto.
	(compute_branch_probabilities): Ditto.
	(compute_value_histograms): Ditto.
	(branch_prob): Ditto.
	(find_spanning_tree): Ditto.
	(end_branch_prob): Ditto.
	(gen_edge_profiler): Move to rtl-profile.c (rtl_gen_edge_profiler).
	(gen_interval_profiler): Ditto (rtl_gen_interval_profiler).
	(gen_pow2_profiler): Ditto (rtl_gen_pow2_profiler).
	(gen_one_value_profiler): Ditto (rtl_gen_one_value_profiler).
	(tree_register_profile_hooks): New.
	(rtl_register_profile_hooks): New.
	* rtl-profile.c: New file.
	* rtl.h (init_branch_prob): Move declaration to value-prof.h.
	(end_branch_prob): Ditto.
	(branch_prob): Ditto.
	* toplev.c (flag_tree_based_profiling): New.
	(f_options): Add -ftree-based-profiling.
	(compile_file): Register rtl-based CFG and profiling hooks.
	(rest_of_compilation): Do rtl-based profiling only when
	!flag_tree_based_profiling.  Register rtl-based profiling hooks.
	(process_options): Sorry for -ftree-based-profiling plus
	-ftest-coverage or -fprofile-values.
	* toplev.h (flag_tree_based_profiling): New.
	* tree-cfg.c (tree_block_ends_with_call_p): New.
	(tree_block_ends_with_condjump_p): New.
	(need_fake_edge_p): New.
	(tree_flow_call_edges_add): New (largely from flow_call_edges_add
	in cfganal.c).
	(tree_cfg_hooks): Add tree_block_ends_with_call_p,
	tree_block_ends_with_condjump_p, tree_flow_call_edges_add.
	* tree-optimize.c (init_tree_optimization_passes):
	Add pass_tree_profile.
	* tree-pass.h: Ditto.
	* tree-profile.c: New file.
	* value-prof.c (value_prof_hooks): New.
	(find_values_to_profile): Rename to rtl_find_values_to_profile.
	Move rtl-specific bits in from branch_prob.
	(value_profile_transformations): Rename to
	rtl_value_profile_transformations.
	(struct value_prof_hooks): New.
	(rtl_value_prof_hooks): New.
	(rtl_register_value_prof_hooks): New.
	(tree_find_values_to_profile): New stub.
	(tree_value_profile_transformations): New stub.
	(tree_value_prof_hooks): New stub.
	(tree_register_value_prof_hooks): New stub.
	(find_values_to_profile): New.
	(value_profile_transformations): New.
	* value-prof.h: Add multiple inclusion guard.
	(struct histogram_value): Change rtx fields to void *.
	(rtl_register_value_prof_hooks): New declaration.
	(tree_register_value_prof_hooks): New declaration.
	(find_values_to_profile): New declaration.
	(free_profiled_values): New declaration.
	(value_profile_transformations): New declaration.
	(struct profile_hooks): New declaration.
	(init_branch_prob): Declaration moved from rtl.h.
	(branch_prob): Declaration moved from rtl.h.
	(end_branch_prob): Declaration mooved from rtl.h.
	(tree_register_profile_hooks): New declaration.
	(rtl_register_profile_hooks): New declaration.
	(tree_profile_hooks): New declaration.
	(rtl_profile_hooks): New declaration.
	* doc/invoke.texi: Document -ftree-based-profiling.

2004-02-12  Jeff Law  <law@redhat.com>

	* domwalk.c (walk_dominator_tree): Move statement walking from
	clients into here.  Walk statements in forward or backward order
	as requested by the client.  Walk either the dominator tree or
	the post-dominator tree as requested by the client.
	* domwalk.h (dom_walk_data): Add two fields to control direction of
	statement walk and dominator vs post-dominator tree walk.  Add
	BSI argument to the per-statement callbacks.
	* tree-ssa-dom.c (optimize_stmt): Update prototype so that it can
	be directly used as a callback for the dominator tree walker.
	Update stmts_to_rescan here.
	(tree_ssa_dominator_optimize): Initialize new fields in the dominator
	walker structure.  Use optimize_stmt instead of dom_opt_walk_stmts
	for statement callback.
	(dom_opt_walk_stmts): Kill.  No longer used.
	* tree-ssa.c (mark_def_sites): Update prototype so that it can be
	called as the per-statement callback.  No longer walk statements here.
	(mark_def_sites_initialize_block): New.
	(rewrite_stmt): Update prototype so that it can be called as the
	per-statement callback.
	(rewrite_walk_stmts): Kill.  No longer used.
	(rewrite_into_ssa): Initialize new fields in the dominator walker
	structure.  Use rewrite_stmt instead of rewrite_walk_stmts.  Add
	mark_def_sites_initialize_block callback.

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

	* doc/cfg.texi: New file.
	* doc/ggcint.texi: Include it.  Add a new chapter.

2004-02-11  Jeff Law  <law@redhat.com>

	* Makefile.in (OBJS-common): Add tree-ssa-forwprop.o
	(tree-ssa-forwprop.o): Add dependencies.
	* timevar.def (TV_TREE_FORWPROP): New timevar.
	* tree-optimize.c (init_tree_optimization_passes): Link in
	the forward propagation pass.
	* tree-pass.h (pass_forwprop): Declare.
	* tree-ssa-forwprop.c: New file with forward propagation pass.
	* doc/invoke.texi: Document dump for forward propagation pass.

2004-02-11  Andrew MacLeod  <amacleod@redhat.com>

	* tree-ssa.c (rewrite_out_of_ssa): Don't use coalesce list until new
	bug resolved.

2004-02-11  Andrew MacLeod  <amacleod@redhat.com>

	* tree-ssa-live.c (compare_pairs): New.  Coalesce list cost function.
	(sort_coalesce_list): Use qsort() to sort list by cost.
	(coalesce_tpa_members): Use correct partition representatives.  Add more
	debug information.  Allow coalesce by list, root_var, or both.
	(tpa_dump): Show partition index.
	* tree-ssa-live.h (SSANORM_COALESCE_PARTITIONS): New flag.
	(SSANORM_USE_COALESCE_LIST): New flag.
	* tree-ssa.c (create_temp): Don't mark as used when created.
	(coalesce_ssa_name): Create coalesce list if requested.  Add more
	debug output.
	(assign_vars): Add additional debug info.
	(remove_ssa_form): Perform TER after assign_vars().
	(rewrite_vars_out_of_ssa): Pass coalesce partitions flag to
	remove_ssa_form.
	(rewrite_out_of_ssa): Add coalesce list flag to remove_ssa_form call.

2004-02-10  Jeff Law  <law@redhat.com>

	* Makefile.in (OBJS-common): Add tree-ssa-phiopt.o
	(tree-ssa-phiopt.o): Add dependencies.
	* timevar.def (TV_TREE_PHIOPT): New timevar.
	* tree-cfg.c (extract_true_false_edges_from_block): Moved here from
	tree-ssa-dom.c.
	(tree_verify_flow_info): Use extract_true_false_edges_from_block.
	* tree-flow.h (extract_true_false_edges_from_block): Declare.
	* tree-ssa-dom.c (extract_true_false_edges_from_block): Moved into
	tree-cfg.c.
	(get_eq_expr_value): Improve type check.
	* tree-optimize.c (init_tree_optimization_passes): Link in
	phiopt pass.
	* tree-pass.h (pass_phiopt): Declare.
	* tree-ssa-phiopt.c: New file with PHI node optimization pass.
	* doc/invoke.texi: Document dump for PHI node optimization.

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

	* tree-sra.c (lookup_scalar): Handle unnamed fields.

2004-02-10  Diego Novillo  <dnovillo@redhat.com>

	* Makefile.in (OBJS-common): Add tree-ssa-alias.o.
	(tree-ssa-alias.o): New rule.
	(tree-ssa-operands.o): Add dependency on $(TIMEVAR_H) and tree-pass.h
	(gt-tree-dfa.h): Remove.
	* timevar.def (TV_TREE_OPS): Rename from unused entry TV_TREE_DFA.
	* tree-ssa-alias.c: New file.
	* tree-dfa.c (struct alias_stats_d, alias_stats, dump_alias_stats,
	may_alias_p, add_may_alias, global_var, aliases_computed_p,
	compute_may_aliases): Move to tree-ssa-alias.c.
	(struct walk_state): Remove fields 'is_asm_expr' and 'num_calls'.
	Update all users.
	(compute_alias_sets, create_memory_tags, may_access_global_mem_p,
	get_memory_tag_for, promote_call_clobbered_vars,
	find_addressable_vars): Remove.
	(call_clobbered_vars): Move to tree-ssa-alias.c and convert to
	bitmap.
	(find_referenced_vars): Move logic to create .GLOBAL_VAR to
	tree-ssa-alias.c.
	(create_ssa_name_ann): New.
	(dump_variable): Rearrange.
	(dump_dfa_stats): Do not show the number of call clobbered
	variables.
	(find_vars_r): Do not try to determine if an assignment my access
	global memory.
	(add_referenced_var): Remove hacks to establish global memory
	dependencies.
	If the variable needs to live in memory mark it call-clobbered.
	* tree-flow-inline.h (ssa_name_ann): New.
	(get_ssa_name_ann): New.
	(set_may_alias_global_mem): Remove.
	(may_alias_global_mem_p): Remove.
	(set_may_point_to_global_mem): Remove.
	(may_point_to_global_mem_p): Remove.
	(is_call_clobbered): New
	(mark_call_clobbered): New
	(mark_non_addressable): New
	* tree-flow.h (enum tree_ann_type): Add SSA_NAME_ANN.
	(enum mem_tag_kind): Declare.
	(struct var_ann_d): Remove fields 'is_call_clobbered',
	'may_alias_global_mem' and 'may_point_to_global_mem'.
	Replace bitfield 'mem_tag' with enum bitfield 'mem_tag_kind'.
	Rename field 'mem_tag' to 'type_mem_tag'.
	(struct stmt_ann_d): Change type of field 'addresses_taken' to a
	bitmap.  Update all users.
	(struct ssa_name_ann_d): Declare.
	(union tree_ann_d): Add field 'ssa_name'.
	(ssa_name_ann_t): New type.
	(struct bb_ann_d): Add field 'has_escape_site'.
	(num_call_clobbered_vars): Remove.
	(call_clobbered_var): Remove.
	(call_clobbered_vars): Change to bitmap.
	(dump_points_to_info): Declare.
	(debug_points_to_info): Declare.
	(walk_use_def_chains_fn): New type.
	(walk_use_def_chains): Declare.
	(is_call_clobbered): Declare.
	(mark_call_clobbered): Declare.
	* tree-simple.c (needs_to_live_in_memory): Move to tree.c.
	(is_gimple_non_addressable): Update comment.
	(is_gimple_call_clobbered): Remove.
	(get_call_expr_in): New.
	(get_base_var): Rename from get_base_symbol.  Update all callers.
	Don't strip SSA_NAME wrappers.
	(get_base_decl): New.
	(get_base_address): New.
	* tree-simple.h (is_gimple_call_clobbered): Remove.
	(needs_to_live_in_memory): Remove.
	(get_base_decl): Declare.
	(get_base_var): Declare.
	(get_base_address): Declare.
	* tree-ssa-dce.c (need_to_preserve_store): Reduce to calling
	needs_to_live_in_memory.
	* tree-ssa-operands.c: Include tree-pass.h and timevar.h
	(get_stmt_operands): Push/pop TV_TREE_OPS time var.
	Call mark_call_clobbered for asms that store to memory.
	(get_expr_operands): When adding operands for INDIRECT_REF
	expressions, use flow-sensitive aliasing, if available.
	Assume that malloc-like function calls won't clobber.
	(add_call_clobber_ops):
	(add_call_read_ops):
	* tree-ssa.c (rewrite_into_ssa): If any variable in vars_to_rename
	is a pointer, invalidate all name memory tags.
	(create_temp): Call is_call_clobbered and mark_call_clobbered.
	(walk_use_def_chains_1): New.
	(walk_use_def_chains): New.

	* tree.c (needs_to_live_in_memory): New.
	* tree.h (DECL_NEEDS_TO_LIVE_IN_MEMORY_INTERNAL): Define.
	(struct tree_decl): Add bitfield 'needs_to_live_in_memory'.
	Update unused bits comment.
	(needs_to_live_in_memory): Declare.

	* tree-simple.h (get_call_expr_in): Declare.
	* tree-sra.c (scalarize_stmt): Call get_call_expr_in when handling
	function calls.
	* tree-ssa-ccp.c (likely_value): Likewise.

	* params.def (PARAM_MAX_CLOBBERED_VARS_GLOBAL_VAR): Remove.
	(PARAM_MAX_CALLS_GLOBAL_VAR): Remove.
	(PARAM_GLOBAL_VAR_THRESHOLD): Define.
	(PARAM_MAX_ALIAS_SET_SIZE): Define.
	Update all users.
	* params.h (MAX_CALLS_FOR_GLOBAL_VAR): Remove.
	(MAX_CLOBBERED_VARS_FOR_GLOBAL_VAR): Remove.
	(GLOBAL_VAR_THRESHOLD): Define.
	(MAX_ALIAS_SET_SIZE): Define.

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

	* langhooks.h (lang_hooks_for_functions): Add missing_noreturn_ok_p.
	* langhooks-def.h, c-lang.c, objc/objc-lang.c
	(LANG_HOOKS_FUNCTION_MISSING_NORETURN_OK_P): New.
	* c-objc-common.c (c_missing_noreturn_ok_p): Return bool.
	(c_objc_common_init): Don't set lang_missing_noreturn_ok_p.
	* c-tree.h (c_missing_noreturn_ok_p): Update decl.
	* flow.c (lang_missing_noreturn_ok_p): Remove.

	* flow.c (check_function_return_warnings): Move to tree-cfg.c.
	* toplev.c (rest_of_compilation): Don't call it.
	* tree-cfg.c (execute_warn_function_return): Move from flow.c,
	rename, update for tree vs rtl.
	(pass_warn_function_return): New.
	* tree-pass.h (pass_warn_function_return): Declare it.
	* tree-optimize.c (init_tree_optimization_passes): Run it.

	* function.h (struct function): Remove x_clobber_return_insn.
	* function.c (free_after_compilation): Don't set it.
	(expand_function_end): Likewise.

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

	Revert:
	2004-02-06  Richard Henderson  <rth@redhat.com>
	* tree-ssa-dom.c (record_equivalences_from_phis): Use
	record_const_or_copy.
	(record_equivalences_from_stmt): Likewise.  Replace
	block_avail_exprs_p and block_nonzero_vars_p args with bd.

2004-02-09  Jeff Law  <law@redhat.com>

	* tree-ssa-dom.c (get_eq_expr_value): Improve handling of boolean
	conditions.

	* domwalk.c (walk_dominator_tree): Completely lose PARENT argument.
	Callers updated.  No longer pass PARENT to callbacks.
	* domwalk.h (struct dom_walk_data): Corresponding changes.
	* tree-ssa-dom.c: Likewise.
	* tree-ssa.c: Likewise.

	* domwalk.c (walk_dominator_tree): Change last argument to be the
	parent block in the dominator tree rather than the last statement
	in the parent block in the dominator tree.  Similarly in all the
	callbacks.
	* domwalk.h (struct dom_walk_data): Update callback prototypes.
	* tree-ssa-dom.c: Corresponding changes.
	* tree-ssa.c: Likewise.

	* tree-ssa-dom.c (redirect_edges_and_update_ssa_graph): Break out
	of tree_ssa_dominator_optimize.  If the out-of-ssa pass creates
	new variables, then invalidate some requested jump threads.

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

	* flow.c (regno_uninitialized): Remove.
	* output.h (regno_uninitialized): Remove.
	* function.c (setjmp_vars_warning): Rename from
	uninitialized_vars_warning, remove uninitialized vars warning.
	* toplev.c (rest_of_handle_life): Update to match.
	* tree.h (setjmp_vars_warning): Likewise.

	* tree-sra.c (lookup_scalar): Set DECL_NAME to something descriptive.

	* tree-ssa.c (warn_uninit): New.
	(warn_uninitialized_var, warn_uninitialized_phi): New.
	(execute_early_warn_uninitialized): New.
	(execute_late_warn_uninitialized): New.
	(gate_warn_uninitialized): New.
	(pass_early_warn_uninitialized): New.
	(pass_late_warn_uninitialized): New.
	* tree-pass.h (pass_early_warn_uninitialized): New.
	(pass_late_warn_uninitialized): New.
	* tree-optimize.c (init_tree_optimization_passes): Add them.

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

	* cppexp.c (append_digit): Rearrange unsignedp/overflow setting.
	(eval_token, num_binary_op, num_part_mul, num_div_op): Likewise.
	* ra-rewrite.c (rewrite_program2): Zero info.
	* reload.c (decompose): Zero val.
	* tree-ssa-ccp.c (visit_phi_node): Zero phi_val.const_val.

2004-02-07  Jan Hubicka  <jh@suse.cz>

	* tree-inline.c (save_body): Clone the parm decl correctly.

	* cgraph.c: Add introductionary comment.
	(cgraph_remove_node): Release DECL_SAVED_INSNS too.
	* cgraphunit.c: Likewise.
	(cgraph_finalize_function): Release DECL_SAVED_INSNS of external function.
	(decl_expand_function): Release DECL_SAVED_INSNS/body/tree.
	(cgraph_remove_unreachable_nodes): Likewise; guard cgraph verification.

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

	* common.opt (fdisable-tree-ssa): Remove.
	* flags.h (flag_disable_tree_ssa): Remove.
	* toplev.c (flag_disable_tree_ssa): Remove.
	(f_options): Don't set it.
	* opts.c (common_handle_option): Likewise.
	* doc/invoke.texi (fdisable-tree-ssa): Remove.

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

	* tree-ssa-dom.c (record_equivalences_from_phis): Use
	record_const_or_copy.
	(record_equivalences_from_stmt): Likewise.  Replace
	block_avail_exprs_p and block_nonzero_vars_p args with bd.

2004-02-06  Andrew Pinski  <pinskia@physics.uc.edu>

	PR middle-end/13127
	* tree-inline.c (declare_return_variable): Set the no warning bit
	on the variable created for the return value.

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

	* tree-pretty-print.c (dump_generic_node): Render NON_LVALUE_EXPR.

	* tree-ssa-dom.c (local_fold): New.
	(thread_across_edge, simplify_rhs_and_lookup_avail_expr,
	find_equivalent_equality_comparison): Use it.

2004-02-06  Andrew Pinski  <pinskia@physics.uc.edu>

	PR c/13863
	* c-common.c (c_decl_uninit_1): Remove.
	(c_decl_uninit): Remove.
	* c-common.h (c_decl_uninit): Remove prototype.
	* c-lang.c (LANG_HOOKS_DECL_UNINIT): Delete.
	* objc/objc-lang.c (LANG_HOOKS_DECL_UNINIT): Delete.
	* c-simplify.c (gimplify_decl_stmt): Set TREE_NO_WARNING
	on the decl where the initial is itself.
	* function.c (uninitialized_vars_warning): Remove old comment
	and check for DECL_INITIAL, replace with a check of TREE_NO_WARNING
	and do not call the langhook.
	* langhooks-def.h (LANG_HOOKS_DECL_UNINIT): Remove.
	(LANG_HOOKS_INITIALIZER): Remove usage of LANG_HOOKS_DECL_UNINIT.
	* langhooks.c (lhd_decl_uninit): Remove.
	* langhooks.h (lhd_decl_uninit): Remove prototype.

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

	* tree-ssa-dom.c (record_const_or_copy_1): New.
	(record_const_or_copy): New.
	(thread_across_edge): Use it.
	(dom_opt_finalize_block): Likewise.  Tidy.
	(record_equality): Split out from ...
	(record_equivalences_from_incoming_edge): ... here.

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

	* tree-ssa-dom.c (simplify_rhs_and_lookup_avail_expr): Allow
	mixing PLUS and MINUS when folding operations.

2004-02-05  Andrew Macleod  <amacleod@redhat.com>

	* tree-pretty-print.c (dump_bb_header):  Allow TDF_SLIM printing.
	(dump_bb_end):  Allow TDF_SLIM printing.
	(dump_generic_bb_buff):  Add flags parameter to dump_bb_end.

2004-02-05  Jan Hubicka  <jh@suse.cz>

	* alias.c (find_base_term, get_addr):  Do not dereference NULL
	pointer when all VALUE's locations has been invalidated.
	(rtx_equal_for_memref_p): Simplify checking of VALUEs.

2004-02-04  Daniel Berlin  <dberlin@dberlin.org>

	* tree-alias-ander.c (andersen_init): Reorder/Redo code so that we
	actually free the memory in intraprocedural mode.
	(andersen_cleanup): Ditto.

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

	* tree-ssa-ccp.c (get_value, visit_phi_node,
	visit_assignment, dump_lattice_value): Tidy.
	(evaluate_stmt): Don't do debug dump here.
	(def_to_undefined): Merge into set_lattice_value.
	(def_to_varying): Likewise, but retain as a wrapper.
	(set_lattice_value): Tidy.  Emit correct debug info.
	(replace_uses_in): Remove strlen hacks.
	(execute_fold_all_builtins): Fix DECL_BUILT_IN comparison.
	Force folding of BUILT_IN_CONSTANT_P.

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

	* builtins.c (fold_builtin_expect): New.
	(fold_builtin_1): Call it.

2004-02-04  Jeff Law  <law@redhat.com>

	* jump.c (duplicate_loop_exit_test): Allow copying of the loop
	exit test even if we do not find the LOOP_END note.

	* domwalk.c: Update comments.

2004-02-04  Brian Booth  <bbooth@redhat.com>

	PR opt/13755
	* tree-dfa.c (compute_alias_sets): set rename flag for variables
	aliased by GLOBAL_VAR.

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

	* tree-ssa-dom.c (simplify_switch_and_lookup_avail_expr): New.
	(eliminate_redundant_computations): Call it.

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

	PR opt/13869
	* tree-cfg.c (cfg_remove_useless_stmts_bb): Correct handling of
	boolean variables in COND_EXPR_COND.

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

	PR middle-end/13325
	* builtins.c (fold_builtin_1): Rename from fold_builtin.
	(fold_builtin): New.
	* c-simplify.c (gimplify_expr_stmt): Check TREE_NO_WARNING.
	* stmt.c (expand_expr_stmt_value): Likewise.
	* tree.h (struct tree_common): Add nowarning_flag.
	(TREE_NO_WARNING): New.
	(TREE_NO_UNUSED_WARNING): Remove.
	* c-typeck.c (build_unary_op): Use TREE_NO_WARNING instead.
	* stmt.c (warn_if_unused_value): Likewise.

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

	* tree-ssa-dce.c: Partial rewrite.  The old DCE is now called
	`conservative'.  The more aggressive algorithm uses control
	dependence and is called `aggressive' or cd-dce.
	* timevar.def (TV_TREE_DCE): Rename.
	(TV_TREE_CD_DCE, TV_CONTROL_DEPENDENCES): New timevars.
	* tree-pass.h: Declare extern pass_cd_dce.
	* tree-optimize.c (init_tree_optimization_passes): Replace
	the final DCE pass with a CD-DCE pass.

2004-02-01  Jan Hubicka  <jh@suse.cz>

	* cgraphunit.c (cgraph_mark_inline_edge): Fix insertion to
	cgraph_inline_hash.

2004-01-30  Frank Ch. Eigler  <fche@redhat.com>

	* common.opt: Add support for -fmudflapth, -fmudflapir.
	* invoke.texi: Document them.
	* opts.c: Ditto.
	* flags.h: Add new flags flag_mudflap_threads, _ignore_reads.
	* toplev.c: Initialize new flags.  Remove redundant code from
	lang_independent_options[].
	* tree-mudflap.c (*): Support new flag_mudflap_threads encoding.
	(mf_xform_derefs_1): Support flag_mudflap_ignore_reads option.
	* c-mudflap.c (mflang_flush_calls): Mark static ctor TREE_USED.

2004-01-30  Ian Lance Taylor  <ian@wasabisystems.com>

	* gengtype-yacc.y (bitfieldlen): Add empty action.

2004-01-30  Diego Novillo  <dnovillo@redhat.com>

	* configure.ac: Move configuration for libbanshee and
	libgmp from configure.in.

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

	PR opt/13524
	* gengtype-yacc.y (struct_fields): Accept unnamed bitfields.
	(bitfieldlen): Split from ...
	(bitfieldopt): ... here.
	* gimplify.c (mark_not_gimple): Remove.
	(gimplify_call_expr): Don't ignore BUILT_IN_MD.
	* tree-dfa.c (struct walk_state): Remove is_not_gimple.
	(find_referenced_vars): Don't look for TREE_NOT_GIMPLE.
	(find_vars_r, add_referenced_var): Likewise.
	* tree-ssa-operands.c (get_stmt_operands, get_expr_operands): Likewise.
	* tree-simple.h (mark_not_gimple): Remove.
	* tree.h (struct tree_common): Remove not_gimple_flag.
	(TREE_NOT_GIMPLE): Remove.

2004-01-29  Jason Merrill  <jason@redhat.com>

	PR c++/13865
	* c-simplify.c (gimplify_for_stmt): Reorganize to fix cleanups.

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

	PR c++/13543
	* tree-inline.c (initialize_inlined_parameters): Register the
	substitute reference also.

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

	* tree-inline.c (gimple_expand_calls_inline): Look inside
	RETURN_EXPR.

	* tree-pretty-print.c (dump_generic_node): If TDF_DETAILS, dump
	both name and uid.

2004-01-29  Zdenek Dvorak  <rakdver@atrey.karlin.mff.cuni.cz>

	* cfg.c (unlink_block): Reset prev_bb and next_bb.

2004-01-29  Jeff Law <law@redhat.com>
	    Andrew MacLeod <amacleod@redhat.com>

	* tree-ssa-live.h (tpa_next_partition): Correctly handle compressed
	elements.
	* tree-ssa.c (coalesce_ssa_name): New argument, flags.  Callers
	updated.  Test SSANORM_COMBINE_TEMPS in flags rather than
	flag_tree_combine_temps.
	(coalesce_vars): Either operand of a copy might not have a
	partition when rewriting a subset of the variables out of SSA form.
	(rewrite_vars_out_of_ssa): Honor -ftree-combine-temps by passing
	in SSANORM_COMBINE_TEMPS in flags argument to remove_sas_form..

2004-01-29  Dale Johannesen  <dalej@apple.com>

	* Makefile.in (OBJS-common):  Move tree-nomudflap.o...
	(OBJS-archive): ...to here, and remove duplicate tree-optimize.o.

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

	PR middle-end/13898
	* gimplify.c (gimplify_init_constructor): Invoke
	lhd_set_decl_assembler_name on the now-static variable.

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

	PR opt/13798
	* expr.c (is_zeros_p): Remove.  Change all callers to use
	initializer_zerop.
	(categorize_ctor_elements_1, categorize_ctor_elements): New.
	(count_type_elements): New.
	(mostly_zeros_p): Use them.
	* gimplify.c (tmp_var_id_num): Split out from create_tmp_var_raw.
	(create_tmp_var_name): Likewise.
	(gimplify_init_constructor): Drop constructors to readonly memory
	as indicated by categorize_ctor_elements and can_move_by_pieces.
	* tree.c (initializer_zerop): Handle VECTOR_CST.  Don't check
	AGGREGATE_TYPE_P for CONSTRUCTOR.
	* tree.h (categorize_ctor_elements): Declare.
	(count_type_elements): Declare.
	* Makefile.in (gimplify.o): Update dependencies.
	(GTFILES): Add gimplify.c.

2004-01-27  Frank Ch. Eigler  <fche@redhat.com>

	* tree-mudflap.c (mx_register_decls): Support VLAs.
	(mf_xform_derefs_1): Disable checking shortcut for VLAs.
	* c-simplify.c (gimplify_decl_stmt): Add mudflap xref comment.
	* gimplify.c (gimplify_bind_expr): Ditto.

2004-01-27  Daniel Berlin  <dberlin@dberlin.org>

	* tree-ssa-pre.c:  Add more comments describing SSAPRE and
	the various functions.
	(generate_expr_as_of_bb): Use PRED, a basic block argument, instead of
	j, the index of that bb.
	(generate_vops_as_of_bb): Ditto.
	(insert_occ_in_preorder_dt_order): Rename to
	create_and_insert_occ_in_preorder_dt_order.

2004-01-27  Daniel Berlin  <dberlin@dberlin.org>

	* tree-ssa-pre.c (rename_1): Add some more comments.

2004-01-25  Andrew Pinski  <pinskia@physics.uc.edu>

	PR c/13748
	* c-decl.c (finish_function): Do not pass
	the function on to optimizers if there was an error.

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

	PR opt/12941
	* combine.c (SHIFT_COUNT_TRUNCATED): Provide default value.
	(simplify_comparison): Don't simplify (eq (zero_extract c 1 r) 0)
	if SHIFT_COUNT_TRUNCATED is set.

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

	PR c/11267
	* c-decl.c (c_finalize): New.
	(finish_function): Use it.  Genericize and finalize only non-nested
	functions.  Register nested functions with cgraph.
	* c-simplify.c: Include cgraph.h.
	(c_genericize): Genericize nested functions.
	* gimplify.c (gimplify_expr): Use DECL_SAVED_INSNS to access
	the struct function for the context.
	* Makefile.in (c-simplify.o): Update dependencies.

2004-01-21  Steven Bosscher  <stevenb@suse.de>

	PR opt/13767
	* tree-cfg.c (simple_goto_p): Remove NONLOCAL_LABEL check.

2004-01-21  Dale Johannesen  <dalej@apple.com>

	* tree-dfa.c: Fix comment.

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

	PR opt/13681
	* tree-ssa-operands.c (get_expr_operands): Handle (&x + c).

	* tree-ssa-ccp.c (maybe_fold_offset_to_component_ref): Handle
	flexible array members and lookalikes.

2004-01-21  Dale Johannesen  <dalej@apple.com>

	* tree-ssa-dom.c (cprop_into_stmt):  Add convert call
	to prevent type mismatches.

2004-01-21  Daniel Berlin  <dberlin@dberlin.org>

	* tree-ssa-pre.c (load_modified_phi_result): PARM_DECL is okay
	to not have a defbb.
	(rename_1): Add a comment.

2004-01-21  Jeff Law  <law@redhat.com>

	* tree-ssa-dom.c (find_equivalent_equality_comparison): Treat
	CONVERT_EXPRs just like NOP_EXPRs.
	(record_equivalences_from_stmt): Similarly.
	(thread_across_edge): Fix formatting goof.

	* tree-ssa-dom.c (thread_across_edge): Remove bogus restriction
	which prevents threading around to the top of a loop.

	* tree-ssa-dom.c (thread_across_edge): Handle SWITCH_EXPRs in the
	target block in addition to COND_EXPRs.

	* tree-ssa-dom.c (thread_across_edge): Create equivalences for
	PHIs before looking at the statements in the destination
	block.

2004-01-20  Roger Sayle  <roger@eyesopen.com>

	* fold-const.c (fold_convert): Rename to fold_convert_const.
	(fold_convert_const): Change arguments to take a tree_code,
	a type and the operand/expression to be converted.  Return
	NULL_TREE if no simplification is possible.  Add support for
	FIX_CEIL_EXPR and FIX_FLOOR_EXPR in addition to FIX_TRUNC_EXPR.
	(fold): Handle FIX_CEIL_EXPR and FIX_FLOOR_EXPR.
	Adjust call to fold_convert to match new fold_convert_const.
	Avoid modifying the tree passed to fold in-place.
	(nondestructive_fold_unary_to_constant): Likewise, simplify
	call to fold_convert to match new fold_convert_const.

2004-01-20  Daniel Berlin  <dberlin@dberlin.org>

	* tree-alias-ander.c (andersen_op_assign): Update
	prototype. Make this handle &x in the operands using
	the addrargs parameter.
	(andersen_init): Turn off ip_partial until variables
	aliasing variables in other functions is resolved.
	(andersen_add_var): Use newly renamed alias_var_new_with_aterm.
	Fix comment.
	(andersen_add_var_same): Ditto.
	(andersen_function_call): Use ip_partial, not flag_unit_at_a_time.
	* tree-alias-common.c (get_values_from_constructor): Add bitmap
	and int * arguments. Used to mark operands that we are taking
	address of.
	(get_alias_var_decl): We should never see FIELD_DECL's right now.
	(intra_function_call): Reverse ordering for slightly faster
	projection merging.
	(find_op_of_decl): New function.
	(find_func_aliases): Use it.
	Comment x = foo.y case.
	Move get_alias_var_decl of arguments so we only call it if
	necessary.
	Handle address of arguments in operations.
	(create_fun_alias_var): tvar->var.
	Set context of fakeargs.
	Set context of fakedecls.
	Set DECL_PTA_ALIASVAR of RETURN_DECL's.
	(create_fun_alias_var_ptf): tvar->var.
	Set context of fakedecls.
	(create_alias_vars): Only create alias vars for globals
	with DECL_INITIAL's.
	* tree-alias-common.h (struct tree_alias_ops):
	Update op_assign arguments.
	(may_alias): Fix comment.
	(same_points_to_set): Ditto.
	(empty_points_to_set): Ditto.
	* tree-alias-type.h: Rename alias_tvar_new_with_aterm
	-> alias_var_new_with_aterm.
	* tree-alias-type.c: Ditto.

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

	* tree-sra.c (get_scalar_for_field): Validate field.
	(create_scalar_copies): Iterate over rhs fields too.

2004-01-19  Dale Johannesen  <dalej@apple.com>

	* params.def:  Add PARAM_MAX_CALLS_GLOBAL_VAR and
	PARAM_MAX_CLOBBERED_VARS_GLOBAL_VAR.
	params.h:  Ditto.
	tree-dfa.c:  Use them.
	doc/invoke.texi:  Document them.

2004-01-19  Jeff Law  <law@redhat.com>

	* tree-ssa.c (insert_phi_nodes_for): Always use fully pruned
	SSA form.

	* tree-flow.h: Update copyright dates.
	(register_new_def): Declare.
	* tree-ssa-dom.c: Update copyright dates.
	Add tracking of current definition of each program variable just
	like we do when rewriting into SSA form.
	(get_value_for, set_value_for): Handle either an SSA_NAME or
	regular variable.
	(tree_ssa_dominator_optimize): Initialize and update CURRDEFS.
	If we thread through a block with real statements, the destination
	of those statements must be rewritten too.
	(thread_across_edge): Skip nop statements at the start of a
	block.
	(dom_opt_initialize_block_local_data): Clear block_defs
	appropriately.
	(record_equivalences_from_phis): Accept walk_data structure.
	Call register_new_def appropriately.
	(optimize_stmt): Call register_new_defs_for_stmt.
	(dom_opt_finalize_block): Restore CURRDEFS appropriately.
	(register_new_definitions_for_stmt): New.
	* tree-ssa.c: Update copyright dates.
	(register_new_def): No longer static.  Accept additional argument
	for the table to hold the new definition.  Callers updated.

	* gimplify.c: Update copyright dates.
	* tree-cfg.c: Likewise.
	* tree.h: Likewise.

	* tree-iterator.c, tree-iterator.c: Use GCC rather than GNU CC.
	* tree-ssa-pre.c, tree-ssa-live.h: Likewise.

2004-01-19  Daniel Berlin  <dberlin@dberlin.org>

	* timevar.def (TV_TREE_SPLIT_EDGES): New timevar.
	* tree-ssa-pre.c (split_critical_edges): Move from here
	(pass_pre): Add PROP_no_crit_edges as required.
	* tree-cfg.c (split_critical_edges): to here.
	(pass_split_crit_edges): New pass.
	* tree-optimize.c (tree_optimization_passes): Add NEXT_PASS
	(split_crit_edges).
	* tree-pass.h: Add PROP_no_crit_edges.
	(pass_split_crit_edges): Declared.

2004-01-19  Frank Ch. Eigler  <fche@redhat.com>

	* tree-mudflap.c (mf_build_check_statement_for): Tolerate
	incoming locus NULL pointer.

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

	* builtins.c (simplify_builtin_strcpy): Export.  Take strlen argument.
	(simplify_builtin_strncpy, simplify_builtin_strcmp): Similarly.
	(simplify_builtin_strncmp): Similarly.
	(simplify_builtin): Update to match.
	* expr.h (simplify_builtin_strcmp, simplify_builtin_strncmp,
	simplify_builtin_strcpy, simplify_builtin_strncpy): Declare.
	* tree-pass.h (pass_fold_builtins): New.
	* tree-optimize.c (init_tree_optimization_passes): Add it.
	* tree-ssa-ccp.c (ccp_fold_builtin): Handle BUILT_IN_STRCPY,
	BUILT_IN_STRNCPY, BUILT_IN_STRCMP, BUILT_IN_STRNCMP.
	(get_strlen): Don't cast to size_t.
	(execute_fold_all_builtins, pass_fold_builtins): New.

2004-01-19  Jan Hubicka  <jh@suse.cz>

	PR opt/13729
	* cgraphunit.c (cgraph_finalize_compilation_unit): Fix memory leak.
	(cgraph_remove_unreachable_nodes):  Do not mix analyzed and
	DECL_SAVED_TREE flags.

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

	* tree-sra.c (REALPART_INDEX, IMAGPART_INDEX): Remove.
	(sra_candidates, needs_copy_in): Use a bitmap.  Update all users.
	(struct sra_elt, sra_elt_hash, sra_elt_eq): New.
	(sra_map_size): Remove.
	(sra_map): Use a htab_t.
	(lookup_scalar): Update to match.
	(get_scalar_for_field, get_scalar_for_complex_part): Likewise.
	(scalarize_structure_assignment): Use annotate_all_with_locus.
	(csc_build_component_ref): Remove index argument.
	(csc_build_complex_part): Take tree_code, not index.
	(create_scalar_copies): Don't collect indicies.
	(emit_scalar_copies): New.
	(scalarize_modify_expr, scalarize_tree_list): Use it.
	(scalarize_return_expr): Likewise.
	(scalarize_structures): Simplify needs_copy_in iteration.
	(scalarize_call_expr): Use annotate_all_with_locus.
	(dump_sra_map_trav): Split from ...
	(dump_sra_map): ... here.  Update for hash table.
	(tree_sra): Update for new datastructures.

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

	* tree-cfg.c (dump_function_to_file): Move ";; Function" header ...
	* tree-optimize.c (execute_one_pass): ... here.

2004-01-17  Daniel Berlin  <dberlin@dberlin.org>

	* tree-alias-common.c: s@_typevar@_var@g, s@_TVAR@_VAR@g,
	s@_TYPEVAR@_VAR@g
	* tree-alias-common.h: Ditto
	* tree.h: Ditto
	* tree-alias-ander.c: Ditto
	* tree-alias-type.c: Ditto
	* tree-alias-type.h: Ditto

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

	* tree-complex.c (gimplify_val): Copy TREE_BLOCK.

	* tree-complex.c (gimplify_val): New.
	(extract_component, do_binop, do_unop): Use it.

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

	* tree-complex.c (expand_complex_operations_1): Fix RETURN_EXPR
	thinko in last change.

2004-01-18  Zdenek Dvorak  <rakdver@atrey.karlin.mff.cuni.cz>

	* cfghooks.c (split_block): Don't redirect edges.
	* cfgrtl.c (rtl_split_block): Do it here.
	* tree-cfg.c (tree_split_block): Ditto.

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

	* tree-cfg.c (verify_expr): Tidy.  Check COND_EXPR for boolean
	condition.

2004-01-17  Jan Hubicka  <jh@suse.cz>

	PR optimization/11761
	* Makefile.in: Remove tree-simple.c from GTYized files.
	* tree-dfa.c (find_addressable_vars): Parse nontrivial ADDR_EXPRs.
	(discover_nonconstant_array_refs_r): New static function.
	(discover_nonconstant_array_refs): New global function.
	* tree-flow.h (discover_nonconstant_array_refs): Declare.
	* tree-simple.c (types_checked, types_in_memory): Kill.
	(struct_needs_to_live_in_memory): Kill.
	(needs_to_live_in_memory): aggregates are safe.
	* tree-ssa.c (rewrite_out_of_ssa): Call the new function.

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

	PR opt/13718
	* tree-complex.c (expand_complex_comparison): Handle COND_EXPR.
	(expand_complex_operations_1): Likewise.

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

	* tree-sra.c (scalarize_tree_list): Take bitmap argument to
	avoid emitting duplicates.  Update all callers.

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

	PR opt/13718
	* tree-complex.c (expand_complex_comparison): New.
	(expand_complex_operations_1): Handle EQ_EXPR and NE_EXPR.

2004-01-16  Daniel Berlin  <dberlin@dberlin.org>

	* tree-alias-common.c (get_alias_var): Handle BIT_FIELD_REF.
	(find_func_aliases): Ditto.
  	Update for fact that basic component_refs are no longer
	is_gimple_variable.
	(create_fun_alias_var): Set DECL_CONTEXT on our faked declarations.
	(pass_del_pta): PTA dumps info on delete, so it needs a name.

2004-01-16  Steven Bosscher  <stevenb@suse.de>

	* tree-optimize.c (init_tree_optimization_passes): Run DCE
	before the first dominator optimization pass.

2004-01-15  Brian Booth <bbooth@redhat.com>
	    Richard Henderson  <rth@redhat.com>

	* tree-sra.c (REALPART_INDEX, IMAGPART_INDEX): New.
	(sra_map_size): New.
	(make_temp): New.
	(mark_all_vdefs): New.
	(is_sra_candidate_decl): New.
	(is_sra_candidate_ref): New.
	(lookup_scalar): Use sra_map_size, make_temp.
	(get_scalar_for_field): Rename from get_scalar_for.
	(get_scalar_for_complex_part): New.
	(can_be_scalarized_p): Handle COMPLEX_TYPE.
	(scalarize_component_ref): Handle REAL/IMAGPART_EXPR.
	(scalarize_structure_assignment): Tidy.
	(find_candidates_for_sra): Handle COMPLEX_TYPE, return bool.
	(csc_assign, csc_build_component_ref): Split out from ...
	(create_scalar_copies): ... here.  Handle COMPLEX_TYPE.
	(csc_build_complex_part): New.
	(scalarize_modify_expr): Use is_sra_candidate_foo.
	(scalarize_tree_list): Likewise.
	(scalarize_return_expr): Likewise.
	(dump_sra_map): Split out from ...
	(tree_sra): ... here.  Tidy.

2004-01-15  Frank Ch. Eigler  <fche@redhat.com>

	* tree-mudflap.c (mf_xform_derefs): Accept void return statements.

2004-01-15  Andrew MacLeod  <amacleod@redhat.com>
	    Jeff Law  <law@redhat.com>

	* tree-ssa-dom.c (remove_local_expressions_from_table): New function
	extracted from dom_opt_finalize_block.
	(restore_vars_to_originalvalue): Likewise.
	(extract_true_false_edges_from_block): Likewise.
	(thread_across_edge): Handle if (cond) too.
	(dom_opt_finalize_block): Use new functions.  Handle if (cond).

	* tree-ssa-dom.c (thread_across_edge): Accept dom_walk argument.
	Record temporary equivalences created by PHIs and temporarily
	const/copy propagate into conditionals.
	(dom_opt_finalize_block): Thread across an edge to a dominated block
	if the dominated block has PHIs.  Remove temporary equivalenecs
	created by PHIs in thread_across_edge.  Update code to restore the
	various hash tables to use the actual varray rather than a local
	copy of the varray.
	(simplify_rhs_and_lookup_avail_expr): Set the condition's code
	before settings its operands.

	* tree-ssa.c (create_temp): Use add_referenced_var rather than
	an incomplete inline of its behavior.  Also make sure to
	set is_dereferenced_{load,store}, is_call_clobbered and is_stored.

	* tree-ssa-live.c (build_tree_conflict_graph): Correctly handle
	case where the result of a PHI is unused.

2004-01-15  Diego Novillo  <dnovillo@redhat.com>

	* cfghooks.c (predicted_by_p): Add missing return.

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

	* tree-ssa-dom.c (optimize_stmt): Dump new statement if
	folding succeeded.

2004-01-15  Kazu Hirata  <kazu@cs.umass.edu>

	* tree-cfg.c: Fix comment typos.
	* tree-eh.c: Likewise.
	* tree-inline.c: Likewise.
	* tree-optimize.c: Likewise.
	* tree-ssa.c: Likewise.
	* tree-ssa-dom.c: Likewise.
	* tree-ssa-operands.c: Likewise.
	* tree-ssa-pre.c: Likewise.
	* tree-tailcall.c: Likewise.

2004-01-14  Jan Hubicka  <jh@suse.cz>

	* basic-block.h: Include predict.h
	(tree_predicted_by_p, rtl_predicted_by_p,  rtl_predict_edge,
	predict_edge_def): Declare.
	* cfghooks.h (cfg_hooks): add predict_edge and predicted_by_p
	(predict_edge, predicted_by_p): Declare.
	* cfghooks.c (predict_edge, predicted_by_p): Declare.
	* cfgrtl (rtl_cfg_hooks, cfg_layout_rtl_cfg_hook): Add new hooks.
	* cse.c (struct cse_basic_block_data): Rename enum values to not
	conflict with profile.h; update all uses.
	* predict.c:  Include tree-flow.h, ggc.h, tree-dump.h
	(predicted_by_p): Rename to ...
	(rtl_predicted_by_p): .. this one; make global
	(tree_predicted_by_p): New.
	(dump_prediction): Add FILE argument.
	(predict_edge): Rename to ...
	(rtl_predict_edge): .. this one.
	(tree_predict_edge): New.
	(combine_predictions_for_insn): Update calls of predict_edge.
	(predict_loops): Break out from ...
	(estimate_probability): ... here; update comments; move updating
	of unknown probabilities from ...
	(estimate_bb_frequencies): ... here.
	(combine_predictions_for_bb): New.
	(tree_predict_by_opcode): New.
	(tree_estimate_probability): New.
	* predict.def (PRED_TREE_POINTER, PRED_TREE_OPCODE_POSITIVE,
	PRED_TREE_OPCODE_NONEQUAL, PRED_TREE_FPOPCODE): New predictors.
	* predict.h: Add include guard.
	(predict_edge, predict_edge_def): Move prototypes to basic_block.h
	* tree-cfg.c (tree_cfg_hooks): Add prediction hooks.
	* tree-dump.c (dump_files): Add profile.
	* tree-flow.h (struct edge_prediction): New structure.
	(struct bb_ann_d): Add field predictions.
	(tree_estimate_probability): Declare.
	* tree-optimize.c (optimize_function_tree): Call tree_estimate_probability.
	* tree.h (tree_dump_index): Add TDI_profile.
	* tree-pass.h (pass_profile): Declare.

2004-01-14  Zdenek Dvorak  <rakdver@atrey.karlin.mff.cuni.cz>

	* basic-block.h (find_basic_blocks, cleanup_cfg,
	delete_unreachable_blocks, merge_seq_blocks): Declare.
	* cfgcleanup.c (merge_seq_blocks): New.
	* output.h (find_basic_blocks, cleanup_cfg, delete_unreachable_blocks):
	Declarations moved to basic-block.h.
	* tree-cfg.c (tree_merge_blocks, tree_can_merge_blocks_p): New.
	(cleanup_tree_cfg): Call merge_seq_blocks.
	(tree_cfg_hooks): Add tree_can_merge_blocks_p and tree_merge_blocks.

2004-01-14  Zdenek Dvorak  <rakdver@atrey.karlin.mff.cuni.cz>

	* tree-cfg.c (tree_make_forwarder_block): Fix.

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

	* tree-complex.c: New file.
	* Makefile.in (OBJS-common): Add it.
	* tree-pass.h (pass_lower_complex): New.
	* tree-optimize.c (init_tree_optimization_passes): Add it.

2004-01-14  Zdenek Dvorak  <rakdver@atrey.karlin.mff.cuni.cz>

	* Makefile.in (tree-ssa-loop.o): Add cfgloop.h dependency.
	(cfghooks.o): Add TIMEVAR_H and toplev.h dependency.
	* basic-block.h (struct edge_def): Use ir_type instead testing of
	cfg_hooks directly.
	(tidy_fallthru_edge, tidy_fallthru_edges, dump_bb, verify_flow_info):
	Declaration removed.
	* cfg.c (verify_flow_info, dump_bb): Moved to cfghooks.c.
	* cfgcleanup.c (try_simplify_condjump): Changed due to change of
	tidy_fallthru_edge.
	* cfghooks.c: Include timevar.h and toplev.h.
	(cfg_hooks): Made static.
	(tree_register_cfg_hooks, ir_type): New.
	(verify_flow_info, dump_bb): Moved from cfg.c.
	(redirect_edge_and_branch, redirect_edge_and_branch_force,
	split_block, split_block_after_labels, move_block_after,
	delete_basic_block, split_edge, create_basic_block,
	create_empty_bb, can_merge_blocks_p, merge_blocks,
	make_forwarder_block, tidy_fallthru_edge, tidy_fallthru_edges): New.
	* cfghooks.h (struct cfg_hooks): Modified.
	(redirect_edge_and_branch, redirect_edge_and_branch_force, split_block,
	delete_basic_block, split_edge, create_basic_block, can_merge_blocks_p,
	merge_blocks, make_forwarder_block): Changed into functions.
	(loop_optimizer_init, loop_optimizer_finalize): Removed.
	(HEADER_BLOCK, LATCH_EDGE): Moved into cfgloop.c.
	(tidy_fallthru_edge, tidy_fallthru_edges, create_empty_bb,
	verify_flow_info, dump_bb, ir_type): Declare.
	(cfg_layout_rtl_cfg_hooks): Declare.
	* cfglayout.c (copy_bbs): Don't call add_to_dominance_info.
	* cfgloop.c (HEADER_BLOCK, LATCH_EDGE): Moved from cfghooks.h.
	(update_latch_info, mfb_keep_just, mfb_keep_nonlatch): New functions.
	(canonicalize_loop_headers): Use new semantics of make_forwarder_block.
	* cfgloop.h (rtl_loop_optimizer_init, rtl_loop_optimizer_finalize):
	Removed.
	(loop_optimizer_init, loop_optimizer_finalize): Declare.
	* cfgloopmanip.c (split_loop_bb): Don't update dominators.
	(remove_bbs): Don't call remove_bbs.
	(create_preheader): Use make_forwarder_block.
	(mfb_keep_just, mfb_update_loops): New static functions.
	* cfgrtl.c (cfg_layout_split_block, rtl_split_block,
	rtl_make_forwarder_block, rtl_create_basic_block,
	rtl_delete_block, rtl_split_block, rtl_merge_blocks,
	tidy_fallthru_edge, rtl_split_edge, cfg_layout_merge_blocks,
	cfg_layout_split_edge): Parts not specific to rtl moved to cfghooks.c
	(tidy_fallthru_edges): Moved to cfghooks.c.
	(rtl_move_block_after): New.
	(redirect_edge_with_latch_update, update_cfg_after_block_merging):
	Removed.
	(rtl_cfg_hooks, cfg_layout_rtl_cfg_hooks): Modified.
	* ifcvt.c (merge_if_block, find_cond_trap, find_if_case_1,
	find_if_case_2): Don't update dominators.
	* loop-init.c (rtl_loop_optimizer_init, rtl_loop_optimizer_finalize):
	Replaced by rtl_loop_optimizer_init and rtl_loop_optimizer_finalize.
	* loop-unswitch.c (unswitch_loop): Don't call add_to_dominance_info.
	* toplev.c (rest_of_handle_loop2): Enter cfglayout mode here.
	* tree-cfg.c (create_bb): Modified to suit create_basic_block hook.
	(tree_redirect_edge_and_branch_1): Merged into
	tree_redirect_edge_and_branch.
	(create_blocks_annotations): Removed.
	(tree_loop_optimizer_init, tree_loop_optimizer_finalize): Removed.
	(tree_make_forwarder_block, remove_bb, tree_split_edge,
	tree_redirect_edge_and_branch, tree_split_block,
	tree_move_block_after): Partially moved to cfghooks.c.
	(tree_duplicate_bb): New.
	(PENDING_STMT): Moved to tree-flow.h.
	(tree_register_cfg_hooks): Moved to cfghooks.c.
	(build_tree_cfg): Don't call create_blocks_annotations.
	(factor_computed_gotos, make_blocks): Use create_empty_bb.
	(cleanup_tree_cfg): Use delete_unreachable_blocks.
	(remove_unreachable_blocks, insert_bb_before): Removed.
	(remove_phi_nodes_and_edges_for_unreachable_block): Modified.
	(tree_find_edge_insert_loc, thread_jumps): Use cfg hooks.
	(bsi_commit_edge_inserts): Update_annotations argument removed.
	(tree_cfg_hooks): Modified.
	* tree-flow.h (PENDING_STMT): Moved from tree-cfg.c.
	(insert_bb_before, remove_unreachable_blocks,
	remove_phi_nodes_and_edges_for_unreachable_block, tree_split_edge):
	Declaration removed.
	(bsi_commit_edge_inserts): Declaration changed.
	(tree_duplicate_bb): Declare.
	* tree-sra.c (scalarize_structures): Changed due to
	bsi_commit_edge_inserts change.
	* tree-ssa-dom.c (tree_ssa_dominator_optimize): Use
	delete_unreachable_blocks.
	* tree-ssa-loop.c: Include cfgloop.h.
	* tree-ssa-pre.c (split_critical_edges, tree_perform_ssapre): Use cfg
	hooks.
	* tree-ssa.c (rewrite_trees, rewrite_vars_out_of_ssa): Changed due to
	bsi_commit_edge_inserts change.
	(ssa_redirect_edge): Record the phi arguments on the redirected edge.
	* tree-tailcall.c (eliminate_tail_call): Clean stored phi arguments.

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

	* gimplify.c (gimplify_lhs_complex_part_expr): Remove.
	(gimplify_modify_expr): Don't call it.

	* tree-alias-common.c (HAVE_BANSHEE): Make sure it's defined.
	(pass_build_pta): Set name.

2004-01-13  Zdenek Dvorak  <rakdver@atrey.karlin.mff.cuni.cz>

	* tree-tailcall.c (eliminate_tail_call): Add phi nodes for the call
	vdefs.
	(find_tail_calls): Ignore returns with virtual operands.

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

	* tree-pass.h: New file.
	* gimple-low.c: Include tree-pass.h.
	(lower_function_body): Make static, take no arguments.  Set
	dont_emit_block_notes and call reset_block_changes here.
	(pass_lower_cf): New.
	* toplev.c (general_init): Call init_tree_optimization_passes.
	* toplev.h (init_tree_optimization_passes): Declare.
	* tree-alias-ander.c: Include tree-pass.h.
	(tree_dump_file, tree_dump_flags): Remove.
	(andersen_init): Don't dump_begin.
	(andersen_cleanup): Don't dump_end.
	* tree-alias-common.c: Include tree-pass.h, timevar.h.
	(currptadecl): Remove.
	(create_alias_vars): Make static, take no args.  Tidy ifdefs.
	(delete_alias_vars): Likewise.  Protect vs PTA_ANDERSEN.
	(pass_build_pta, pass_del_pta): New.
	* tree-alias-common.h (create_alias_vars): Delete decl.
	(delete_alias_vars): Likewise.
	* tree-cfg.c: Include tree-pass.h.
	(tree_dump_file, tree_dump_flags): Remove.
	(build_tree_cfg): Don't timevar, do init_flow.  Ensure one bb.
	Don't dump the function here.
	(execute_build_cfg, pass_build_cfg): New.
	(remove_useless_stmts): Make static, take no arguments.
	(pass_remove_useless_stmts): New.
	(remove_bb): Don't open the dump file.
	* tree-dfa.c: Include tree-pass.h.
	(tree_dump_file, tree_dump_flags): Remove.
	(find_referenced_vars): Make static, take no args.  Do init_tree_ssa.
	(compute_may_aliases): Similarly.  Don't timevar or open dump file.
	Don't delete_alias_vars here.
	(pass_referenced_vars, pass_may_alias): New.
	* tree-dump.c (dump_files): Remove optimization dumps.
	(extra_dump_files, extra_dump_files_in_use): New.
	(extra_dump_files_alloced): New.
	(dump_register): New.
	(get_dump_file_info): New.
	(dump_begin, dump_enabled_p, dump_flag_name): Use it.
	(dump_enable_all): Handle extra_dump_files.
	(dump_switch_p_1): Split out from dump_switch_p.
	(dump_switch_p): Handle extra_dump_files.
	* tree-dump.h (dump_register): Declare.
	* tree-eh.c: Include tree-pass.h
	(lower_eh_constructs): Make static, take no args.  Don't timevar,
	don't dump function.
	(pass_lower_eh): New.
	* tree-flow.h (remove_useless_stmts, find_referenced_vars,
	compute_may_aliases, lower_function_body, rewrite_out_of_ssa,
	tree_ssa_ccp, tree_ssa_dominator_optimize, tree_ssa_dce,
	tree_ssa_loop_opt, lower_eh_constructs, tree_sra): Remove.
	(rewrite_into_ssa): Update decl.
	* tree-mudflap.c: Include tree-pass.h.
	(mudflap_function_decls): Make static, take no args, don't process
	functions with mf_marked_p.
	(mudflap_function_ops): Likewise.
	(gate_mudflap, pass_mudflap_1, pass_mudflap_2): New.
	(mudflap_enqueue_decl): Don't open dump file.
	(mudflap_enqueue_constant): Likewise.
	* tree-nomudflap.c: Include tree-pass.h.
	(mudflap_c_function_decls, mudflap_c_function_ops): Remove.
	(pass_mudflap_1, pass_mudflap_2): New.
	* tree-optimize.c: Include tree-pass.h.
	(optimize_function_tree): Remove.
	(tree_dump_file, tree_dump_flags, vars_to_rename): New.
	(all_passes): New.
	(execute_gimple, pass_gimple): New.
	(execute_rebuild_bind, pass_rebuild_bind): New.
	(gate_all_optimizations, pass_all_optimizations): New.
	(execute_del_cfg, pass_del_cfg): New.
	(register_one_dump_file, register_dump_files): New.
	(dup_pass_1, init_tree_optimization_passes): New.
	(current_properties, last_verified): New.
	(execute_todo, execute_one_pass, execute_pass_list): New.
	(tree_rest_of_compilation): Remove -O0 passes.
	* tree-sra.c: Include tree-pass.h, flags.h.
	(tree_dump_file, tree_dump_flags, vars_to_rename): Remove.
	(tree_sra): Make static, take no args.  Don't timevar or dump file.
	(gate_sra, pass_sra): New.
	* tree-ssa-ccp.c: Include tree-pass.h, flags.h.
	(tree_dump_file, tree_dump_flags): New.
	(tree_ssa_ccp): Make static, take no args.  Don't timevar or dump file.
	(gate_ccp, pass_ccp): New.
	(substitute_and_fold): Take no args.
	* tree-ssa-dce.c: Include tree-pass.h, flags.h.
	(tree_dump_file, tree_dump_flags): New.
	(tree_ssa_dce): Make static, take no args.  Don't open dump file.
	(gate_dce, pass_dce): New.
	* tree-ssa-dom.c: Include tree-pass.h, flags.h.
	(tree_dump_file, tree_dump_flags, vars_to_rename): Remove.
	(tree_ssa_dominator_optimize): Make static, take no args, don't
	timevar, don't dump file.
	(gate_dominator, pass_dominator): New.
	* tree-ssa-loop.c: Include tree-pass.h, flags.h.
	(tree_dump_file, tree_dump_flags): Remove.
	(tree_ssa_loop_opt): Make static, take no args, don't open dump file.
	(gate_loop, pass_loop): New.
	* tree-ssa-pre.c: Include tree-pass.h, flags.h.
	(tree_dump_file, tree_dump_flags): Remove.
	(execute_pre): Rename from tree_perform_ssapre, make static,
	take no args, don't timevar, don't open dump file, don't allocate
	vars_to_rename.
	(gate_pre, pass_pre): New.
	* tree-ssa.c: Include tree-pass.h.
	(tree_dump_file, tree_dump_flags, vars_to_rename): Remove.
	(rewrite_into_ssa): Take no arguments, don't open dump file.
	(rewrite_out_of_ssa): Make static, take no args, don't timevar,
	don't open dump file.  Disable TER if mudflap.
	(pass_build_ssa, pass_del_ssa): New.
	* tree-tailcall.c: Include tree-pass.h, flags.h.
	(tree_dump_file, tree_dump_flags): Remove.
	(tree_optimize_tail_calls_1): Rename from tree_optimize_tail_calls.
	Make static, take only opt_tailcalls, don't dump file.
	(execute_tail_recursion, gate_tail_calls, execute_tail_calls): New.
	(pass_tail_recursion, pass_tail_calls): New.
	* tree.h (enum tree_dump_index): Remove optimization dumps.
	* Makefile.in (tree-alias-ander.o, tree-alias-common.o, tree-ssa.o,
	tree-ssa-dom.o, tree-ssa-pre.o, tree-cfg.o, tree-tailcall.o,
	tree-dfa.o, tree-eh.o, tree-ssa-loop.o, tree-optimize.o, gimple-low.o,
	tree-mudflap.o, tree-ssa-dce.o, tree-ssa-ccp.o, tree-sra.o: Update
	dependencies.

2004-01-12  Frank Ch. Eigler  <fche@redhat.com>

	* tree-mudflap.c (mf_xform_derefs): Restore instrumentation of
	RETURN_EXPRs.

2004-01-11  Jan Hubicka  <jh@suse.cz>

	* tree-cfg.c (remove_usless_stmts_cond):  Fold statement.
	(remove_useless_stmts_1):  Fold trees we know how to fold.

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

	* gimplify.c (gimplify_constructor): Merge into ...
	(gimplify_init_constructor): ... here.  Handle COMPLEX_TYPE and
	VECTOR_TYPE.
	(gimplify_lhs_complex_part_expr): New.
	(gimplify_modify_expr): Call it.
	* tree-simple.c (is_gimple_rhs): Accept COMPLEX_EXPR.
	* c-pretty-print.c (pp_c_initializer): Accept any type CONSTRUCTOR.
	(pp_c_initializer_list): Fix code expectations for VECTOR_TYPE and
	COMPLEX_TYPE.

2004-01-09  Steven Bosscher  <stevenb@suse.de>

	PR optimization/13599
	* tree-cfg.c (remove_useless_stmts_cond): Clear last-goto
	before returning.

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

	* gimplify.c (gimplify_asm_expr): Fix ordering of ASM_INPUTS.

2004-01-09  Jan Hubicka  <jh@suse.cz>

	* cgraph.h (cgraph_clone_inlined_nodes): Declare.
	* cgraphunit.c (cgrpah_clone_inlined_nodes): Make global.
	(cgraph_mark_inline_edge): Sanity check that size is positive.
	(cgraph_decide_inlining): Fix typo.
	* tree-optimize.c (tree_rest_of_compilation): Fix node duplication
	code.

2004-01-09  Jan Hubicka  <jh@suse.cz>

	* tree-inline.c (estimate_num_insns_1): Fix.

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

	* tree-alias-ander.c, tree-cfg.c, tree-dfa.c, tree-mudflap.c,
	tree-sra.c, tree-ssa-ccp.c, tree-ssa-dce.c, tree-ssa-dom.c,
	tree-ssa-loop.c, tree-ssa-pre.c, tree-ssa.c, tree-tailcall.c: Rename
	dump_file and dump_flags to tree_dump_file/flags.

2004-01-08  Frank Ch. Eigler  <fche@redhat.com>

	* tree-mudflap.c (mf_build_string): Properly mf_mark string.
	(mf_varname_tree): Remove redundant marking.
	* tree-optimize.c (tree_rest_of_compilation): Skip mudflap processing
	of mf_marked functions.
	* c-mudflap.c (mflang_flush_calls): mf_mark synthetic function.

2004-01-07  Diego Novillo  <dnovillo@redhat.com>

	* Makefile.in (OBJS-common): Remove tree-must-alias.o
	(tree-must-alias.o): Remove.
	* common.opt (ftree-must-alias): Remove.
	* flags.h (flag_tree_must_alias): Remove.  Update all users.
	* timevar.def (TV_TREE_MUST_ALIAS): Remove.
	* toplev.c (f_options): Remove entry for -ftree-must-alias.
	* tree-alias-common.c (local_alias_vars): Add GTY marker.
	(local_alias_varnums): Likewise.
	* tree-dfa.c (aliases_computed_p): Declare.
	(dump_variable): Show variable UID and dereferenced bits.
	(compute_may_aliases): Add arguments 'vars_to_rename' and 'phase'.
	Do not call create_alias_vars.
	Call promote_call_clobbered_vars
	Do debugging dumps.
	Set 'aliases_computed_p' to true before returning.
	(create_memory_tags): Call may_be_aliased.
	Mark new memory tags for renaming.
	(compute_alias_sets): Don't do debugging dumps.
	(find_variable_in): Move from tree-must-alias.c
	(remove_element_from): Likewise.
	(find_addressable_vars): Likewise
	(promote_call_clobbered_vars): New.
	(get_memory_tag_for): Mark the tag volatile if the pointed-to type
	is volatile.
	* tree-dump.c (dump_files): Remove entry for tree-mustalias.
	Add entries for tree-ssa7, tree-dom3 and tree-dce3.
	* tree-flow-inline.h (may_be_aliased): New.
	* tree-flow.h (may_be_aliased): Declare.
	(aliases_computed_p): Declare.
	(tree_compute_must_alias): Remove.
	* tree-must-alias.c: Remove.
	* tree-optimize.c: Include tree-alias-common.h.
	(optimize_function_tree): Call create_alias_vars before going into
	SSA form.
	Do not compute aliases until after the first DOM and DCE passes.
	Run DOM and DCE once more after computing may-aliases.
	* tree-ssa-dom.c (propagate_copy): Merge the dereferenced bit flags
	when copy propagating pointers.
	* tree-ssa-operands.c (get_stmt_operands): Assume that the
	statement has no volatile operands.
	(get_expr_operands): When processing an INDIRECT_REF expressions,
	mark the statement as having volatile operands if aliases have not
	been computed.
	(add_stmt_operand): If the variable may be aliased and aliasing has
	not been computed yet, mark the statement as having volatile
	operands.
	* tree-ssa.c (init_tree_ssa): Set aliases_computed_p to false.
	(delete_tree_ssa): Likewise.
	* tree.h (tree_dump_index): Remove TDI_mustalias.
	Add TDI_dom_3, TDI_ssa_7 and TDI_dce_3.
	* doc/invoke.texi: Remove must-alias documentation.

2004-01-07  Jeff Law  <law@redhat.com>

	* tree-ssa-dce.c (find_useful_stmts): Do not consider PHIs for
	virtual operands inherently necessary.

2004-01-07  Zdenek Dvorak  <rakdver@atrey.karlin.mff.cuni.cz>

	* tree-dfa.c (free_df_for_stmt, free_df): New functions.
	(compute_immediate_uses_for_stmt): Record uses in VDEFs.
	* tree-flow.h (free_df, kill_redundant_phi_nodes): Declare.
	* tree-optimize.c (optimize_function_tree): Call
	kill_redundant_phi_nodes.
	* tree-ssa-ccp.c (finalize): Call free_df.
	* tree-ssa.c (replace_immediate_uses, raise_value,
	kill_redundant_phi_nodes): New functions.

2004-01-06  Jeff Law  <law@redhat.com>

	* tree.h (FUNCTION_RECEIVES_NONLOCAL_GOTO): Kill.
	* tree-cfg.c (make_exit_edges, is_ctrl_altering_stmt):  Use
	current_function_has_nonlocal_label instead of
	FUNCTION_RECEIVES_NONLOCAL_GOTO.
	* gimplify.c (gimplify_expr): Set has_nonlocal_label in the
	appropriate function's struct function rather than setting
	a bit in the FUNCTION_DECL.

2004-01-06  Jan Hubicka  <jh@suse.cz>

	* expr.c (string_constant): Recognize array_ref.

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

	* builtins.c (builtin_save_expr): New.
	(expand_builtin_mathfn, expand_builtin_mathfn_2,
	expand_builtin_strcmp, expand_builtin_strncmp,
	expand_builtin_strcat, fold_builtin_cabs): Use it.

2004-01-06  Jan Hubicka  <jh@suse.cz>

	* fold-const.c (fold): Do not rebuild comparison when nothing
	changed.

2004-01-05  Jan Hubicka  <jh@suse.cz>

	* tree-ssa-ccp.c (ccp_fold_builtin): Return early for builtins
	taking no arugment.

2004-01-05  Steven Bosscher  <steven@gcc.gnu.org>

	* tree-ssa-dce.c: Clean up whitespace.

	* tree-cfg.c (tree_verify_flow_info): Fix complaint about
	missing or wrong labels in the targets of a conditional branch.

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

	* tree-ssa-dom.c (record_equivalences_from_incoming_edge): Check
	for signed zeros before recording value.
	* Makefile.in (tree-ssa-dom.o): Depend on real.h.

2004-01-05  Jeff Law  <law@redhat.com>

	* tree-ssa-dom.c (cprop_into_stmt): Remove hack which prevented
	copy propagation into statements with virtual operands, but no
	real operands.

	* tree-ssa-dom.c (tree_ssa_dominator_optimize): Correctly handle
	the case where an edge we wish to redirect is split by the out of SSA
	code.

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

	* c-tree.h (struct lang_type): Add enum_min, enum_max.
	* c-decl.c (finish_enum): Set them.  Set TYPE_MIN/MAX_VALUE to
	the limits of the compatible type, not to the enumerators.
	(check_bitfield_type_and_width): Use them.
	(finish_struct): Clear allocated struct lang_type.
	* gimplify.c (gimplify_switch_expr): Remove special handling of
	outer cast in a switch.
	* tree-ssa-dom.c (record_equivalences_from_incoming_edge): Likewise.

2004-01-05  Daniel Berlin  <dberlin@dberlin.org>

	* tree-ssa-pre.c (added_phis): Removed.
	Remove gt-tree-ssa-pre.h.
	(process_left_occs_and_kills): ASM_EXPR's block load pre.

	* Makefile.in (GTFILES): Don't process tree-ssa-pre.c.
	gt-tree-ssa-pre.h isn't a gtfile anymore.

2004-01-05  Andrew Pinski  <pinskia@physics.uc.edu>

	* config.gcc (powerpc-*-darwin*): Make libbanshee rebuild
	on PPC darwin.

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

	* gimplify.c (gimplify_expr): Move check for error_mark inside
	the main loop.

2004-01-04  Jan Hubicka  <jh@suse.cz>

	* Makefile.in (cgraph.o, cgraphunit.o): Add intl.h dependency.
	* cgraph.c (create_edge, dump_cgraph): Update to use inline_failed
	* cgraph.h (cgraph_edge): Replace inline_call by inline_failed
	(cgraph_inline_p): Add extra argument reason.
	* cgraphunit.c: Minor formating fixes.
	cgraph_first_inlined_callee): New functions.
	(record_call_1): Record builtins too.
	(cgraph_analyze_function): Update inline_failed messages.
	(cgraph_mark_functions_to_output, cgraph_expand_function, cgraph_inlined_into,
	cgraph_inlined_callees, cgraph_estimate_growth): Update to use inline_failed.
	(cgraph_check_inline_limits): Likewise; Add argument reason.
	(cgraph_set_inline_failed): New static function.
	(cgraph_decide_inlining_of_small_function, cgraph_decide_inlining): Set
	reasons.
	(cgraph_inline_p): Add new argument reason.
	* tree-inline.c (expand_call_inline):  Update warning.

2004-01-04  Andreas Jaeger  <aj@suse.de>

	* common.opt: Re-order some options in ASCII collating orders.

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

	* toplev.c (rest_of_compilation): Fixup merge error wrt
	check_function_return_warnings.

	* tree.h (FUNCTION_RECEIVES_NONLOCAL_GOTO): Use unsigned_flag.

2004-01-02  Jan Hubicka  <jh@suse.cz>

	* c-decl.c (duplicate_decls):  Output DIE of extern inline function
	only when it can be inlined.
	* c-objc-common.c (c_disregard_inline_limits):  When not inlining
	extern inline functions do not disregard.
	* cgraphunit.c (cgraph_analyze_function): When not inlining do not set
	inline.
	(cgraph_decide_inlining): Limit work done when not inlining.
	(cgrpah_decide_inlining_incrementally): Likewise.
	* tree-optimize.c (tree_rest_of_compilation): Do not call
	optimize_inline_calls
	when there is nothing to inline.

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

	* c-common.c (c_expand_expr): Don't handle STMT_EXPR.
	* c-objc-common.c (c_objc_common_finish_file): Use expand_expr.
	* c-semantics.c (lang_expand_stmt, lang_expand_decl_stmt,
	expand_cond, genrtl_do_pushlevel, genrtl_goto_stmt, genrtl_expr_stmt,
	genrtl_expr_stmt_value, genrtl_decl_stmt, genrtl_if_stmt,
	genrtl_while_stmt, genrtl_do_stmt_1, genrtl_do_stmt,
	genrtl_return_stmt, genrtl_for_stmt, genrtl_break_stmt,
	genrtl_continue_stmt, genrtl_scope_stmt, genrtl_switch_stmt,
	genrtl_case_label, genrtl_compound_stmt, genrtl_asm_stmt,
	genrtl_cleanup_stmt, expand_stmt, find_reachable_label,
	find_reachable_label_1, expand_unreachable_if_stmt,
	expand_unreachable_stmt): Remove.
	* c-common.h: Update.

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

	* c-mudflap.c (mflang_register_call): Remove.
	(mflang_flush_calls): Use start_function/finish_function.
	* tree-mudflap.c (mf_init_extern_trees): Tidy.
	(mf_decl_cache_locals): Fix chaining for empty body.
	(deferred_static_decl_labels): Remove.
	(deferred_static_decls_init): Remove.
	(mudflap_register_call): New.
	(mudflap_enqueue_decl): Use it.  Remove label argument.
	(mudflap_enqueue_constant): Likewise.
	(mudflap_finish_file): Update to match.
	* tree-mudflap.h (mudflap_enqueue_decl): Remove label argument.
	(mudflap_enqueue_constant): Likewise.
	(mflang_register_call): Remove.
	* tree-nomudflap.c (mudflap_enqueue_decl): Remove label argument.
	(mudflap_enqueue_constant): Likewise.
	* tree-optimize.c (tree_ssa_finish): Don't create NULL bodies.
	* varasm.c (make_decl_rtl): Update mudflap_enqueue_decl call.
	(output_constant_def_contents): Similarly for mudflap_enqueue_constant.

2003-12-26  Sebastian Pop  <s.pop@laposte.net>

	* tree-cfg.c (print_loop, print_pred_bbs, print_succ_bbs,
	debug_loop_ir, print_loop_ir): New.
	* tree-flow.h (debug_loop_ir, print_loop_ir): Declare.

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

	* tree-cfg.c (tree_find_edge_insert_loc): Do not use the target
	block as an insertion location if the target block has PHI nodes.

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

	* cgraphunit.c (cgraph_mark_inline): Accept argument edge; return
	next edge not redirected.
	(cgraph_recursive_inlining_p): Simplify.
	(cgraph_decide_inlining*): Update calls of cgraph_mark_inline.

2003-12-22  Toon Moene  <toon@moene.indiv.nluug.nl>

	* tree-alias-common.c (find_func_aliases): Do not call
	intra_function_call for languages assuring no aliasing between
	arguments (by themselves) and global memory.

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

	* tree-ssa-ccp.c (fold_stmt): Return when there is no RHS
	(get_rhs): Return for RETURN_EXPR with no operand.

2003-12-21  Zdenek Dvorak  <rakdver@atrey.karlin.mff.cuni.cz>

	* tree-cfg.c (tree_make_forwarder_block): Use split_block.
	(tree_split_block): New.
	(tree_cfg_hooks): Add tree_split_block.
	(tree_loop_optimizer_init):  Enable force_single_succ_latches.
	* cfgloopmanip.c (loop_split_edge_with): Don't update dominators.
	* cfgrtl.c (rtl_split_edge, cfg_layout_split_edge): Update dominators.

2003-12-19  Daniel Berlin  <dberlin@dberlin.org>

	* tree-dfa.c (alias_stats_d): New structure.
	(alias_stats): New variable.
	(create_memory_tags): Zero out alias_stats.
	(dump_alias_stats): New function.
	(compute_alias_sets): Call it if TDF_STATS is set.
	(may_alias_p): Collect the various statistics.

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

	* gimple-low.c (expand_var_p): Always expand volatiles.
	* tree-dfa.c (find_referenced_vars): Move up in the file.
	(create_memory_tags): New local function.
	(compute_may_aliases): Call it.
	(add_referenced_var): Move code to create memory tags and create
	aliasing arrays to create_memory_tags.
	(get_memory_tag_for): Don't mark memory tags volatile.  Mark them
	addressable.
	* tree-flow.h (var_ann_d): Add bitfields is_dereferenced_store and
	is_dereferenced_load.
	(add_call_clobbered_var): Remove.
	* tree-ssa-operands.c (check_optype_freelist): Mark arguments
	unused.
	(add_optype_freelist): Likewise.
	(add_stmt_operand): Don't add operands for volatile variables.

2003-12-19  Kazu Hirata  <kazu@cs.umass.edu>

	* dominance.c: Fix comment typos.
	* et-forest.c: Likewise.
	* et-forest.h: Likewise.
	* tree-cfg.c: Likewise.
	* tree-eh.c: Likewise.
	* tree-mudflap.c: Likewise.
	* tree-optimize.c: Likewise.
	* tree-pretty-print.c: Likewise.
	* tree-ssa-ccp.c: Likewise.
	* tree-ssa-dom.c: Likewise.
	* tree-ssa.c: Likewise.
	* tree-tailcall.c: Likewise.
	* tree.def: Likewise.
	* tree.h: Likewise.

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

	PR c++/12453
	* c-simplify.c (stmt_expr_last_stmt): Split out from...
	(gimplify_stmt_expr): Here.
	* c-common.h: Declare it.

2003-12-18  Zdenek Dvorak  <rakdver@atrey.karlin.mff.cuni.cz>

	* et-forest.h (et_forest_create, et_forest_delete,
	et_forest_add_node, et_forest_add_edge, et_forest_remove_node,
	et_forest_remove_edge, et_forest_parent,
	et_forest_common_ancestor, et_forest_node_value,
	et_forest_enumerate_sons): Declarations removed.
	(struct et_node): New.
	(et_new_tree, et_free_tree, et_set_father, et_split, et_nca,
	et_below): Declare.
	* et-forest.c (struct et_forest_occurrence, struct et_forest,
	struct et_forest_node): Removed.
	(et_forest_create, et_forest_delete,
	et_forest_add_node, et_forest_add_edge, et_forest_remove_node,
	et_forest_remove_edge, et_forest_parent,
	et_forest_common_ancestor, et_forest_node_value,
	et_forest_enumerate_sons, splay, remove_all_occurrences,
	find_leftmost_node, find_rightmost_node, calculate_value): Removed.
	(struct et_occ): New.
	(et_nodes, et_occurences): New.
	(set_depth, set_depth_add, set_prev, set_next, et_recomp_min,
	et_check_occ_sanity, et_check_sanity, et_check_tree_sanity,
	record_path_before_1, record_path_before, check_path_after_1,
	check_path_after, et_splay, et_new_occ, et_new_tree,
	et_free_tree, et_set_father, et_split, et_nca, et_below): New.
	* basic-block.h (struct basic_block_def): New field dom.
	(struct dominance_info): Type removed.
	(calculate_dominance_info, free_dominance_info,
	nearest_common_dominator, set_immediate_dominator,
	get_immediate_dominator, dominated_by_p, get_dominated_by,
	add_to_dominance_info, delete_from_dominance_info,
	recount_dominator, redirect_immediate_dominators,
	iterate_fix_dominators, verify_dominators): Declarations
	changed.
	(enum dom_state): New.
	(dom_computed): New variable.
	(first_dom_son, next_dom_son): Declare.
	* dominance.c (struct dominance_info): Removed.
	(BB_NODE, SET_BB_NODE): Removed.
	(calculate_dominance_info, free_dominance_info,
	nearest_common_dominator, set_immediate_dominator,
	get_immediate_dominator, dominated_by_p, get_dominated_by,
	add_to_dominance_info, delete_from_dominance_info,
	recount_dominator, redirect_immediate_dominators,
	iterate_fix_dominators, verify_dominators,
	debug_dominance_info): Work over new datastructure.  Access
	dominance datastructures through CFG.
	(assign_dfs_numbers, compute_dom_fast_query, first_dom_son,
	next_dom_son): New.
	* tree-cfg.c (pdom_info): Variable removed.
	(create_bb): Add the block to the dominance information.
	(cleanup_tree_cfg): Let updating of the dominance on the
	individual passes.
	(remove_bb): Don't handle pdom.
	(cleanup_control_expr_graph, tree_make_forwarder_block,
	thread_jumps): Invalidate the dominators.
	(tree_split_edge): Update the dominators.
	(compute_dominance_frontiers_1, compute_dominance_frontiers,
	tree_verify_flow_info, tree_loop_optimizer_init): Use the new
	interface to dominators.
	* domwalk.c (walk_dominator_tree): Do not use dom_children.
	* tree-flow-inline.h (add_dom_child, remove_dom_child,
	clear_dom_children, dom_children): Removed.
	* tree-flow.h (struct bb_ann_d): Dom_children field removed.
	(add_dom_child, dom_children, build_dominator_tree): Declaration
	removed.
	(compute_dominance_frontiers): Declaration changed.
	* tree-optimize.c (optimize_function_tree): Free dominance
	information in the end.
	* tree-ssa-dom.c (tree_ssa_dominator_optimize,
	dom_opt_finalize_block): Do not use dom_children.
	* tree-ssa-pre.c (fast_a_dominates_b, build_dfs_id_array_1,
	build_dfs_id_array): Removed.
	(pre_idom, dfs_id, dfs_id_last): Variables removed.
	(build_dfn_array): Do not use dom_children.
	(eref_compare, load_modified_phi_result, rename_1, reaching_def,
	finalize_1, collect_expressions, tree_perform_ssapre): Use the
	new interface to the dominance information.
	* tree-ssa.c (struct mark_def_sites_global_data): Idom field
	removed.
	(set_livein_block, verify_use, verify_phi_args,
	rewrite_into_ssa, mark_def_sites, verify_ssa): Use the new
	interface to the dominance information.
	(build_dominator_tree): Removed.
	* tree-tailcall.c (tree_optimize_tail_calls): Invalidate
	dominance information.
	* bt-load.c (dom): Variable removed.
	(augment_live_range, combine_btr_defs, migrate_btr_def,
	migrate_btr_defs, branch_target_load_optimize): Updated for the
	new interface for dominance information.
	* cfglayout.c (copy_bbs): Removed loops argument. Updated for
	the new interface for dominance information.
	* cfglayout.h (copy_bbs): Declaration changed.
	* cfgloop.c (flow_loop_pre_header_find, flow_loops_cfg_dump,
	flow_loop_scan, canonicalize_loop_headers, flow_loops_find): Updated
	for the new interface for dominance information.
	(flow_loop_scan): Loops argument removed.
	(flow_loops_free): Don't release dominators.
	* cfgloop.h (struct cfg): Dom field removed.
	(flow_loop_scan, loop_split_edge_with, simple_loop_p,
	just_once_each_iteration_p, split_loop_bb): Declaration changed.
	* cfgloopanal.c (simple_loop_exit_p, simple_increment,
	just_once_each_iteration_p, simple_loop_p): Remove loops argument.
	Updated for the new interface for dominance information.
	* cfgloopmanip.c (remove_bbs, find_path, create_preheader,
	split_loop_bb, loopify, duplicate_loop_to_header_edge,
	force_single_succ_latches, loop_split_edge_with): Ditto.
	(create_loop_notes): Free the dominators.
	* gcse.c (dominators): Variable removed.
	(free_code_hoist_mem, compute_code_hoist_data, hoist_code):
	Updated for the new interface for dominance information.
	* ifcvt.c (post_dominators): Variable removed.
	(mark_loop_exit_edges, merge_if_block, find_if_header,
	find_cond_trap, find_if_case_1, find_if_case_2, if_convert):
	Updated for the new interface for dominance information.
	* loop-init.c (rtl_loop_optimizer_init,
	rtl_loop_optimizer_finalize): Ditto.
	* loop-unroll.c (decide_peel_simple, decide_peel_once_rolling,
	decide_peel_completely, decide_unroll_stupid,
	decide_unroll_constant_iterations,
	decide_unroll_runtime_iterations): Loops argument removed.
	Updated for the new interface for dominance information.
	(unroll_and_peel_loops, peel_loops_completely,
	unroll_loop_runtime_iterations): Updated for the new interface for
	dominance information.
	* loop-unswitch.c (may_unswitch_on_p, unswitch_loops,
	unswitch_single_loop, unswitch_loop): Updated for the new
	interface for dominance information.
	* predict.c (process_note_predictions, process_note_prediction,
	estimate_probability, note_prediction_to_br_prob): Ditto.
	* sched-rgn.c (find_rgns, init_regions): Ditto.
	* toplev.c (rest_of_handle_branch_prob): Free the dominators.

2003-12-18  Jeff Law  <law@redhat.com>

	* tree-ssa-dom.c (edges_to_redirect, redirection_targets): Merged
	into a single varray "redirection_edges".
	(tree_ssa_dominator_optimize): Twiddle initialization, finalization
	and accessors to redirection information based on combining varrays.
	Get the threading destination from the saved edge rather than from a
	saved block.  Mark variables appearing in PHIs at the jump thread
	destination to be taken out of SSA form.
	(thread_across_edge): Save the edge into the destination block
	rather than the destination block itself.  Twiddle based on
	combining varrays of jump threading information.
	* tree-flow.h (tree_block_forwards_to): Returns an edge rather than
	a block.
	* tree-cfg.c (tree_block_forwards_to): Return the edge leading to
	the target block rather than the target block itself.

2003-12-18  Daniel Berlin  <dberlin@dberlin.org>

	* tree-dfa.c (get_memory_tag_for): Don't put things with different
	points-to sets in the same memory tag.

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

	* c-common.c (handle_nonnull_attribute, check_function_nonnull):
	Initialize arg_num.
	* c-format.c (handle_format_attribute): Initialize format_num.
	* rtlanal.c (get_related_value): Initialize get_jump_table_offset

2003-12-18  Zdenek Dvorak  <rakdver@atrey.karlin.mff.cuni.cz>

	* stmt.c (expand_start_loop, expand_loop_continue_here,
	expand_end_loop): Don't create loop notes.

2003-12-18  Zdenek Dvorak  <rakdver@atrey.karlin.mff.cuni.cz>
	    Jeff Law  <law@redhat.com>

	* tree-cfg.c (tree_node_shared_p): Explicitly allow sharing of
	CST nodes.
	* tree-simple.c (is_gimple_rhs): Allow CST nodes.
	(is_gimple_min_invariant): Reject constants with TREE_OVERFLOW set.
	* tree-ssa-ccp (visit_assignment): Test is_gimple_min_invariant
	after munging bitfields.
	* tree-ssa-dom.c (record_equivalences_from_stmt): Similarly.

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

	Based on patch by Dale Johannesen
	* expr.c (MOVE_RATIO, CLEAR_RATIO): Move to ...
	* expr.h (MOVE_RATIO, CLEAR_RATIO): ... here

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

	* Makefile.in (sibcall.o): Kill.
	(tree-tailcall.o): Add except.h dependency
	* sibcall.c: Kill.
	(purge_reg_equiv_notes, purge_mem_unchanging_flag): Move to ...
	* calls.c (purge_reg_equiv_notes, purge_mem_unchanging_flag) ... here.
	(expand_call): Do not produce placeholders; do not deal with tail
	recursion; set tail_call_emit.
	(fixup_tail_calls): New.
	* expr.h (fixup_tail_calls): Declare.
	* toplev.c (rest_of_handle_sibling_calls): Kill.
	(rest_of_compialtion): Do not use rest_of_handle_sibling_calls;
	call fixup_tail_calls.
	* tree-dump.c (dump_files): Add tail2
	* tree-flow.h (tree_optimize_tail_calls): Update prototype.
	* tree-optimize.c (optimize_function_tree): Do tail optimization twice.
	* tree-tailcall.c: Inlucde except.h
	(suitable_for_tail_call_opt_p): New.
	(optimize_tail_call): Add opt_tailcalls argument; optimize tailcalls.
	(tree_optimize_tail_calls): Add opt_tailcalls/pass arguments.
	* tree.h (CALL_EXPR_TAILCALL): New.
	(tree_dump_index): Add tail2
	* function.h (struct function): Add tail_call_emit field.

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

	* tree-inline.c (estimate_num_insns_1):  Check that all nodes are
	known; add missing nodes; fix MODIFY_EXPR

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

	PR middle-end/12920
	* stor-layout.c (layout_type): Just return if type is
	error_mark_node.
	* c-decl.c (grokdeclarator): Immediately layout an
	ARRAY_TYPE used in a pointer-to-array declarator.

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

	* tree-dfa.c (may_alias_p): If VAR and PTR are pointers with the
	same alias set, return false.
	(get_memory_tag_for): Group based on alias set classes, not on
	conflicting alias sets.
	* tree-must-alias.c (promote_var): Don't bring aliases over when
	all the may-aliases of a non-promotable variable are promoted.

2003-12-16  Andrew MacLeod  <amacleod@redhat.com>

	* tree-flow-inline.h (free_vuse, free_vdefs): Moved to
	tree-ssa-operands.c
	(get_def_ops, get_use_ops, get_vdef_ops, get_vuse_ops): Use the new
	more direct structure pointer.
	(get_use_op_ptr, get_def_op_ptr): Cast is no longer necessary.
	* tree-flow.h (struct stmt_ann_d): Replace operands and voperands
	pointers with pointers directly to the operand types.
	* tree-ssa-dom.c (cprop_into_stmt): Use new stmt based interface to
	free virtual operands.  Check virtual bases of both VUSE and VDEF.
	* tree-ssa-operands.c (struct voperands_d): Declare here, used only
	for previous_vops during stmt operand construction.
	(struct vecmanage_d, vecmanage_add_segmen, vecmanage_add_special,
	vecmanage_init, vecmanage_tree_ptr_init, vecmanage_fini, check_free,
	vecmanage_new_vector, vecmanage_new_tree_ptr_vector,
	vecmanage_free_vector): Remove.
	(allocate_ssa_op_vec, free_ssa_op_vec, allocate_ssa_virtual_op_vec,
	allocate_operands_t, allocate_voperands_t): Remove.
	(finalize_new_ssa_operands, inalize_new_ssa_virtual_operand): Remove.
	(struct freelist_d): New. List of free operand structures.
	(check_optype_freelist): New. Choose memory from freelist, if available.
	(add_optype_freelist): New. Add structure to freelist, if appropriate.
	(allocate_def_optype): New. Allocate a def operand list from GC.
	(allocate_use_optype): New. Allocate a useoperand list from GC.
	(allocate_vdef_optype): New. Allocate a vdef operand list from GC.
	(allocate_vuse_optype): New. Allocate a vuse operand list from GC.
	(free_uses, free_defs, free_vuses, free_vdefs): Use GC and the freelist.
	(remove_vuses, remove_vdefs): New.  External interface to remove virtual
	operands.
	(init_ssa_operands, fini_ssa_operands): Ensure the free list is empty.
	(finalize_ssa_defs, finalize_ssa_use, finalize_ssa_vdefs,
	finalize_ssa_vuses): Use new direct pointers from the stmt annotation.
	(append_vdef, append_vuse): No need to hack prev_vops pointer now.
	(get_stmt_operands): use new freeing interface, keep previous vops in
	their own local structure for now, passing its address around.
	* tree-ssa-operands.h (struct def_optype_d, struct use_optype_d,
	struct vdef_optype_d, struct vuse_optype_d): Implement as a single
	dynamically allocated structure.
	(struct operands_d, struct operands_d): Remove.
	* tree-ssa-pre.c (subst_phis): Remove virtual operands using new funcs.

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

	* tree-cfg.c (verify_addr_expr): Rename to ....
	(verify_expr):  ... this one; check that no SSA names are on
	freelist.
	(verify_stmt, verify_stmts): Update calls of verify_addr_expr.

	Revert until initializers are made language independent:
	* cgraphunit.c (record_call_1): Do not call analyze_expr hook
	* langhooks-def.h (LANG_HOOKS_CALLGRAPH_ANALYZE_EXPR): Kill.
	(LANG_HOOKS_CALLGRAPH_INITIALIZER): Update.
	* longhooks.h (lang_hooks_for_callgraph): Kill analyze_expr.

2003-12-16  Zdenek Dvorak  <rakdver@atrey.karlin.mff.cuni.cz>

	* tree-pretty-print.c (dump_bb_header): Show block number when
	there is no label.
	(pp_cfg_jump): Show labels in addition to block numbers.
	(dump_generic_bb_buff): Always call dump_bb_header.

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

	* cgraphunit.c (cgraph_remove_unreachable_nodes): Fix typo;
	improve comments; cleanup linked list mantenance.

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

	* tree-sra.c (can_be_scalarized_p): Reject volatile variables.

	* sibcall.c (skip_copy_to_return_value): Initialize 'hardret' and
	'softret'.

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

	* cgraph.c (cgraph_remove_node): Ignore DECL_EXTERNAL clones.
	* cgraphunit.c (verify_cgraph_node): Do not insist on unemmited extern
	inline functions to be valid.
	(cgraph_finalize_compilation_unit):  Fix ordering.
	(cgraph_mark_functions_to_output): Do not insist on DECL_EXTERNAL
	nodes to be reclaimed.
	(cgraph_remove_unreachable_nodes): New function.
	(cgraph_decide_inlining): use it.

2003-12-15  Andrew MacLeod  <amacleod@redhat.com>

	* Makefile.in (TREE_FLOW_H): Add dependence on tree-ssa-operands.h
	(OBJS-common): Add tree-ssa-operands.o
	(tree-ssa-operands.o): Add dependencies.
	(GTFILES): Add tree-ssa-operands.[ch].
	* tree-dfa.c (get_stmt_operands, get_expr_operands, add_stmt_operand,
	note_addressable, add_def, add_use, add_vde, add_vuse,
	add_call_clobber_ops, add_call_read_ops): Moved to tree-ssa-operands.c.
	(compute_immediate_uses_for_stmt): Use new optypes interface.
	(cleanup_operand_arrays): Delete.
	(collect_dfa_stats_r): Use new optypes interface.
	(get_call_flags): Moved to tree-ssa-operands.c.
	(vdefs_disappeared_p, mark_new_vars_to_rename): Use optypes interface.
	* tree-flow-inline.h (def_ops, use_ops, vdef_ops, vuse_ops): Use new
	optypes.
	(free_vuses): New. Clear and release vuses.
	(free_vdefs): New. Clear and release vdefs.
	(get_use_ops_ptr): New. Get address of a use op.
	(get_def_ops_ptr): New. Get address of a use op.
	(get_vdef_result_ptr): New. Get address of a use op.
	(get_vdef_op_ptr): New. Get address of a use op.
	(get_vuse_op_ptr): New. Get address of a use op.
	(start_ssa_stmt_operands): New. Entry point to start processing stmt
	operands.
	* tree-flow.h (struct operands_d, struct voperands_d): Move to
	tree-ssa-operands.h
	(struct stmt_ann_d): Add GTY markers to operands.
	* tree-pretty-print.c (dump_vops): Use optypes interface.
	* tree-sra.c (create_scalar_copies): Use optypes interface.
	(scalarize_structures, scalarize_modify_exp): Use optypes interface.
	* tree-ssa-ccp.c (visit_stmt, ccp_fold, initialize, replace_uses_in,
	likely_value, set_rhs): Use optypes interface.
	* tree-ssa-dce.c (find_useful_stmts, stmt_useful_p, process_worklist):
	Use optypes interface.
	* tree-ssa-dom.c (thread_across_edge, thread_jumps_walk_stmts): Use
	optypes interface.
	(cprop_into_stmt): Rewrite using new interface.
	(eliminate_redundant_computations, record_equivalences_from_stmt,
	optimize_stmt, avail_expr_hash, avail_expr_eq): Use optypes interface.
	* tree-ssa-live.c (create_ssa_var_map, calculate_live_on_entry,
	build_tree_conflict_graph,register_ssa_partitions_for_vars): Use
	optypes interface.
	* tree-ssa-pre.c (names_match_p, maybe_find_rhs_use_for_var,
	expr_phi_insertion, same_e_version_real_occ_real_occ, opnum_of_phi,
	generate_expr_as_of_bb, generate_vops_as_of_bb, subst_phis,
	load_modified_real_occ_real_occ, same_e_version_phi_result, can_insert,
	get_default_def, reaching_def, process_left_occs_and_kills,
	collect_expressions): Use optypes interface.
	* tree-ssa.c (mark_def_sites, check_replaceable, find_replaceable_in_bb,
	dump_replaceable_exprs, rewrite_trees, verify_ssa, rewrite_stmt): Use
	optypes interface.
	(init_tree_ssa): Initialize new operand data structures.
	(delete_tree_ssa): Free new operand structures.
	* tree.h (VDEF_RESULT, VDEF_OP, NUM_VDEFS): Move to tree-ssa-operands.h.

	* tree-ssa-operands.h: New file.
	(struct def_optype_d): New. Structure for stmt defs.
	(struct use_optype_d): New. Structure for stmt uses.
	(struct vdef_optype_d): New. Structure for stmt vdefs.
	(struct vuse_optype_d): New. Structure for stmt vuses.
	(USE_OPS, STMT_USE_OPS, NUM_USES, USE_OP_PTR, USE_OP): Macros to
	access stmt uses.
	(DEF_OPS, STMT_DEF_OPS, NUM_DEFS, DEF_OP_PTR, DEF_OP): Macros to
	access stmt defs.
	(VDEF_OPS, STMT_VDEF_OPS, NUM_VDEFS, VDEF_RESULT_PTR, VDEF_RESULT,
	VDEF_OP_PTR, VDEF_OP): Macros to access stmt vdefs.
	(VUSE_OPS, STMT_VUSE_OPS, NUM_VUSES, VUSE_OP_PTR, VUSE_OP): Macros to
	access stmt vuses.
	(struct operands_d, struct voperands_d): moved from tree-dfa.c.
	* tree-ssa-operands.c: New file.
	(build_defs, build_uses, build_vdefs, build_vuses): New static varrays.
	(struct vecmanage_d): New. Struct to manage non-GC vectors.
	(vecmanage_add_segment): New. Add a new segment to a vector manager.
	(vecmanage_add_special): New. Add a large vector to the special list.
	(vecmanage_init): Initialize a vector manager.
	(vecmanage_tree_ptr_init): New. Initialize a vector manager for tree *.
	(vecmanage_fini): New. Release vector manager memory.
	(check_free): New. Look for free memory in the vector maanger.
	(vecmanage_new_vector): New. Allocate a vector.
	(vecmanage_new_tree_ptr_vector): New. Allocate a vector of 'tree *'.
	(vecmanage_free_vector): New. Free a vector.
	(free_ssa_op_vec): New. Free an ssa operand's memory.
	(allocate_ssa_op_vec): New. Allocate a vector for use/defs.
	(allocate_ssa_virtual_op_vec): New. Allocate a vector for vuse/vdefs.
	(allocate_operands_t): New. Allocate an operand structure.
	(allocate_voperands_t): New. Allocate a virtual operand structure.
	(free_uses): New. Clear and release uses.
	(free_defs): New. Clear and release defs.
	(init_ssa_operands): New. Initialize ssa operand management.
	(fini_ssa_operands): New. Cleanup ssa operand management.
	(finalize_new_ssa_operands): New. Commit current operands.
	(finalize_new_ssa_virtual_operands): New. Commit current virtual ops.
	(finalize_ssa_defs): New. Commit and verify stmt definitions.
	(finalize_ssa_uses): New. Commit and verify stmt uses.
	(finalize_ssa_vdefs): New. Commit and verify stmt virtual definitions.
	(finalize_ssa_vuses): New. Commit and verify stmt virtual uses.
	(finalize_ssa_stmt_operands): New. Commit all stmt operands.
	(verify_start_operands): New. Verify build mechanism is ready for a new
	stmt.
	(append_def): Renamed from add_def, and moved from tree-dfa.c.
	(append_use): Renamed from add_def, and moved from tree-dfa.c.
	(append_vdef): Renamed from add_def, and moved from tree-dfa.c.
	(append_vuse): Renamed from add_def, and moved from tree-dfa.c.
	(add_vuse): New. Entry point to add a vuse to a stmt.
	(get_call_flags): Moved from tree-dfa.c
	(get_stmt_operands, get_expr_operands, add_stmt_operand): Moved from
	tree-dfa.c, and use new optype interface.
	(note_addressabe, add_call_clobber_ops, add_call_read_ops): Moved from
	tree-dfa.c

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

	* tree-optimize.c (optimize_function_tree): Call BITMAP_XFREE.

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

	PR optimization/12747

	* tree-cfg.c (verify_addr_expr): Simplify predicates.
	* tree-must-alias.c (addresses_needed): Declare as file local.
	(can_be_promoted): New.
	(tree_compute_must_alias): Call it.
	Remove promoted variables from call_clobbered_vars.
	(find_addressable_vars): Update comment.
	Remove argument.  Update callers.
	(promote_var): Always clear TREE_ADDRESSABLE.
	Don't remove promoted variables from call_clobbered_vars.
	If the promoted variable is in the may-alias set of a
	non-promotable variable, copy its alias set into the alias set of
	the non-promotable variable.
	(find_variable_in): Update comment.
	* tree-sra.c (can_be_scalarized_p): Reject structures with
	__complex__ fields in them.

2003-12-15  Diego Novillo  <dnovillo@redhat.com>
	    Jason Merrill <jason@redhat.com>

	PR optimization/12747

	* Makefile.in (tree-simple.o): Add dependency on bitmap.h and
	$(GGC_H).
	(GTFILES): Add tree-simple.c.
	* tree-simple.c: Include ggc.h and bitmap.h.
	(is_gimple_non_addressable_1): Remove.  Update all callers.
	(types_checked): New local variable.
	(types_in_memory): New local variable.
	(struct_needs_to_live_in_memory): New.
	(needs_to_live_in_memory): New.
	(is_gimple_reg): Call it.
	(is_gimple_non_addressable): Call it.
	(is_gimple_call_clobbered): Call it.
	* tree-simple.h (needs_to_live_in_memory): Declare.

2003-12-14  Andreas Jaeger  <aj@suse.de>

	* config/rs6000/rs6000.c (rs6000_output_function_epilogue): Handle
	GNU F95.

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

	* cgraphunit.c (cgraph_expand_function):  Release function body when no
	longer needed.
	(lookup_recursive_calls): New function.
	(cgraph_decide_recursive_inlining): Likewise.
	(cgraph_decide_inlining_of_small_functions): Do recursive inlining.
	* tree-inline.c: Include function.h
	(copy_body): Choose saved body for recursive inlining.
	(initialize_inlined_parameters): Likewise.
	(expand_call_inline): Do not verify nodes when recursivly inlining,
	insert ret_label into decl map.
	* params.def (PARAM_MAX_INLINE_INSNS_RECURSIVE,
	PARAM_MAX_INLINE_INSNS_RECURSIVE_AUTO,
	PARAM_MAX_INLINE_RECURSIVE_DEPTH,
	PARAM_MAX_INLINE_RECURSIVE_DEPTH_AUTO): New argument.
	* invoke.texi (max-inline-insns-recursive, max-inline-recursive-depth):
	Document.
	* Makefile.in (tree-inline.o): Include function.h.

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

	* cgraphunit.c (record_call_1): Do not call analyze_expr hook
	* langhooks-def.h (LANG_HOOKS_CALLGRAPH_ANALYZE_EXPR): Kill.
	(LANG_HOOKS_CALLGRAPH_INITIALIZER): Update.
	* longhooks.h (lang_hooks_for_callgraph): Kill analyze_expr.

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

	* timevar.def (TV_TREE_STMT_VERIFY, TV_CFG_VERIFY, TV_CGRAPH_VERIFY):
	New timers.
	* tree-cfg.c (verify_stmts):  Push/pop timevar.
	* cfg.c: Include timevar.h
	(verify_flow_info): Push/pop timevar.
	* Makefile.in (cfg.o): Add dependnecy on TIMEVARS

	* cgraph.c (cgraph_create_edge): Sanity check for duplicates;
	initialize aux.
	(cgraph_remove_node): Decrease cgraph_n_nodes; do not clear
	DECL_SAVED_TREE when dumping.
	(cgraph_dump_node): Break out from ...; print more information.
	(cgraph_dump): ... here.
	* cgraph.h (cgraph_node): Add aux field.
	(dump_cgraph_node, verify_cgraph, verify_cgraph_node): Declare.
	(cgraph_mark_inline_edge): Declare
	* cgraphunit.c (error_found): New static variable.
	(verify_cgraph_node_1): New static function.
	(verify_cgraph_node, verify_cgraph): New global function.
	(cgraph_expand_function): More sanity checks.
	(cgraph_clone_inline_nodes): Destructivly clone DECL_EXTERNAL nodes.
	(cgraph_mark_inline_edge): Make global.
	(cgraph_decide_inlining): Remove extern inline functions never inlined.
	(cgraph_decide_inlining_incrementally): Verify that function body is
	still present.
	(expand_all_functions): Verify that all nodes are reachable.
	(cgraph_optimize): Verify cgraph and memory management.
	* tree-inline.c (copy_body_r): All edges must be present.
	(expand_call_inline): Sanity check newly created edges and nodes
	being inlined.
	(optimize_inline_calls): Sanity check that we've inlined everything.
	* tree-optimize.c (tree_rest_of_compilation): Clone functions inlined
	into cloned node.

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

	* tree-flow.h (tree_ssa_useless_type_conversion_1): Declare.
	* tree-flow.c (tree_ssa_useless_type_conversion_1): Break out from
	from...; allow complex types whose subtypes match.
	(tree_ssa_useless_type_conversion): ... here.

2003-12-12  Jeff Law  <law@redhat.com>

	* tree-ssa-dom.c (optimize_stmt): Don't call cleanup_control_expr
	here.  Instead just note that we need to cleanup the cfg (which
	will DTRT).

	* timevar.def (TV_TREE_SSA_THREAD_JUMPS): Kill.
	* tree-dump.c (dump_files): Kill .thread dump.
	* tree.h (TDI_thread_jumps): Kill.
	* tree-flow.h (tree_ssa_dominator_thread_jumps): Kill prototype.
	* tree-optimize.c (optimize_function_tree): Kill call to
	tree_ssa_dominator_thread_jumps.
	* tree-ssa-dom.c (thread_through_phis): Kill.  We no longer need
	to restrict threading through PHIs.
	(tree_ssa_dominator_thread_jumps): Kill.
	(tree_ssa_domiantor_optimize_1): Fold back into
	tree_ssa_dominator_optimize.
	(tree_ssa_dominator_optimize): Mark back edges in the flow graph.
	Kill code which conditionalized the walk_tree callbacks based
	on thread_through_phis.  When threading jumps, reorganize code
	so that we can take the affected variables out of SSA form.
	Mark new variables created by out-of-ssa code as needing to be
	rewritten.
	(thread_across_edge): Always allow threading through phis.
	(thread_jumps_walk_stmts): Kill.

	* tree-ssa.c (create_temp): When we create a new temporary, make
	sure to put it into referenced_vars, give it an ID number and
	a suitable mem_tag.
	(eliminate_build): If we encounter a PHI argument which is an
	SSA_VAR we are not rewriting out of SSA form, then just treat
	it like a constant.
	(rewrite_vars_out_of_ssa): New function.
	* tree-flow.h (rewrite_vars_out_of_ssa): Prototype.
	* tree-ssa-live.c (register_ssa_partitions_for_vars): New function.
	* tree-ssa-live.h (register_ssa_partitions_for_vars): Prototype.

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

	* tree-inline.c (remap_decl): Avoid invalid sharing.
	* cp-tree.h (optimize_function): Kill.
	* optimize.c (optimize_function): Kill.
	* semantics.c (expand_body): Do not call optimize_function.

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

	* cgraphunit.c (cgraph_optimize):  Do not decide inlining when not
	inlining

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

	* tree-inline.c (initialize_inlined_parameters): Disable
	constant propagation for non-gimple-min-invariant when
	preserving gimple form.

2003-12-11  Jeff Law  <law@redhat.com>

	* tree-ssa-ccp.c (widen_bitfield): Clear out unwanted high bits
	even if the field's type is unsigned.
	* tree-ssa-dom.c (record_equivalences_from_stmt): When creating
	equivalences from stores, be more careful about non-constant
	stores to bitfields.

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

	* opts.c (decode_options): Do not enable the tree loop optimizer by
	default.
	* tree-ssa-loop.c (tree_ssa_loop_opt): Remove ENABLE_CHECKING
	guards.

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

	* builtins.c (expand_builtin_profile_func): New.
	(expand_builtin): Use it.
	* builtins.def (BUILT_IN_PROFILE_FUNC_ENTER): New.
	(BUILT_IN_PROFILE_FUNC_EXIT): New.
	* function.c (expand_function_start, expand_function_end): Don't
	do function instrumentation here.
	* gimplify.c (gimplify_function_tree): Do it here.

	* c-opts.c (c_common_post_options): Don't ever use rtl inlining.

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

	* ifcvt.c (dead_or_predicable): Initialize local variable
	'earliest'.
	* tree-cfg.c (verify_stmt): Fix typo.
	* tree-ssa-dom.c (propagate_value): New local function.
	(cprop_into_stmt): Call it.
	(cprop_into_phis): Call it.
	(eliminate_redundant_computations): Call it.

2003-12-10  Dale Johannesen  <dalej@apple.com>

	* tree-dfa.c (compute_alias_sets):  Don't try to make
	GLOBAL_VAR alias itself.

2003-12-08  Steven Bosscher  <stevenb@suse.de>

	* tree-must-alias.c (tree_compute_must_alias): Use
	num_call_clobbered_vars and call_clobbered_var() instead of
	poking in the call_clobbered_vars varray directly.

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

	* cgraph.c (cgraph_function_possibly_inlined_p): Fix syntax error on
	gcc-2.95.

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

	Revert

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

		* c-common.c (c_address_looks_like_offsetof): New.
		* c-common.h (c_address_looks_like_offsetof): Declare.
		* c-typeck.c (build_unary_op) <ADDR_EXPR>: Use it.  Don't lower
		address references not destined for offsetof.
		(c_expand_return): Only look inside ARRAY_REF and COMPONENT_REF
		when looking for returning address of local variable.
		* expr.c (expand_expr_1): Don't dereference size
		of unbounded arrays.
		* gimplify.c (gimplify_addr_expr): Only fold
		address of variable size array elements.
		* tree-simple.c (is_gimple_min_invariant): Also check
		is_gimple_variable before disallowing offset address for type.
		* tree-ssa-ccp.c (maybe_fold_offset_to_aggregate_ref): New.
		(maybe_fold_offset_to_component_ref): Use it.
		(maybe_fold_stmt_indirect, maybe_fold_stmt_plus): Likewise.
		(maybe_fold_offset_to_array_ref): Likewise.
		Don't fail for division remainder non-zero.
		* varasm.c (initializer_constant_valid_p) <ADDR_EXPR>: Use
		handled_component_p and look inside references.
		<MINUS_EXPR>: Always look past widening casts.

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

	* cgraph.c (cgraph_inline_hash): New global variable.
	(cgraph_create_node): Break out of ....
	(cgraph_node): ... this one.
	(cgraph_redirect_edge_callee):  New function.
	(cgraph_remove_node): Aggressively elliminate dead nodes;
	remove node out of clone list.
	(dump_cgraph): Dump inlined_to field; dump uid numbers.
	(cgraph_clone_edge): Return edge created.
	(cgraph_clone_node): New.
	(cgraph_function_possibly_inlined_p): Re-implement using hashtable.
	* cgraph.h: Include hashtab.h
	(struct cgraph_global_info): Kill inline_once, will be output and
	cloned_times fields.  Add inlined_to field.
	(cgraph_node): Add next_clone.
	(cgraph_inline_hash): Declare.
	(cgraph_clone_edge): Update prototype.
	(cgraph_clone_node, cgraph_redirect_callee): Declare.
	* cgraphunit.c (cgraph_optimize_function): Kill.
	(cgraph_assemble_function): Kill next_needed to avoid GGC corruption.
	(cgraph_analyze_function): Do not intialize cloned_times and
	will_be_output.
	(cgraph_finalize_compilation_unit):  Clear next_needed.
	(cgraph_optimize_function): Kill.
	(cgraph_expand_function): Do not use cgraph_optimize_function.
	(cgraph_estimate_growth, cgraph_mark_inline,
	cgraph_check_inline_limits, cgraph_recursive_inlining_p,
	cgraph_preserve_function_body_p): Update for explicit clones.
	(INLINED_TIMES, SET_INLINED_TIMES, cgraph_inlined_into,
	cgraph_inlined_callees, struct cgraph_inline_context,
	cgraph_create_inline_context, cgraph_free_inline_context,
	cgraph_inline_context_set_caller, cgraph_inline_context_clear_caller,
	cgraph_inline_context_set_callee, cgraph_inline_context_clear_callee,
	update_callee_keys): Kill.
	(cgraph_clone_inlined_nodes, cgraph_mark_inline_edge): New.
	(cgraph_decide_inlining_of_small_functions, (cgraph_decide_inlining,
	cgraph_decide_inlining_incrementally): Simplify.
	* tree-inline.c (typedef struct_inline_data): New field saving_p.
	(copy_body_r): Update all clones.
	(expand_call_inline): Remove inlined cgraph node.
	(save_body): Inicialize id.node and id.saving_p.
	* tree-optimize.c (tree_rest_of_compilation): Maintain clone up-to-date
	in no-unit-at-a-time mode.

2003-12-08  Steven Bosscher  <stevenb@suse.de>

	* tree-optimize.c (optimize_function_tree): Move verify_ssa calls
	into conditionals.

2003-12-08  Daniel Berlin  <dberlin@dberlin.org>

	* tree-alias-ander.c (andersen_same_points_to_set): Fix memory leak.

2003-12-08  Jeff Law  <law@redhat.com>

	* tree-ssa-live.c (register_ssa_partition): Kill legacy code which
	recursively called register_ssa_partition on PHI arguments when
	SSA_VAR was defined by a PHI_NODE.

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

	* tree-dump.c (dump_files): Fix ordering of tail call pass.
	* tree.h (tree_dump_index): Likewise.

2003-12-08  Zdenek Dvorak  <rakdver@atrey.karlin.mff.cuni.cz>

	* Makefile.in (tree-cfg.o): Add gt-tree-cfg.h dependency.
	(GTFILES): Add tree-cfg.c.
	* tree-cfg.c: Include gt-tree-cfg.h.
	(factored_computed_goto_label, factored_computed_goto):
	Mark gc roots.

2003-12-08  Steven Bosscher  <stevenb@suse.de>
	    Jan Hubicka  <jh@suse.de>

	* gengtype-lex.l (IWOrD): Add HOST_WIDEST_INT
	* Makefile.in (function.o, reg-stack.o): Add missing dependency on
	basic-block.h.
	(GTFILES): Add basic-block.h and hwint.h.
	* basic-block.h (struct edge_def): Add GTY markers, make garbage
	collectable.  Make `insns' field GC safe depending on the setting
	of cfg_hooks.
	(struct basic_block_def): Add GTY markers, make garbage collectable.
	(tree_bb_root, tree_phi_root): Kill extern decls.
	(ENTRY_BLOCK_PTR, EXIT_BLOCK_PTR): Change from macro to variable
	(entry_exit_blocks): Kill.
	* cfg.c: Include ggc.h
	(bb_pool, edge_pool, entry_exit_blocks): Kill.
	(ENTRY_BLOCK_PTR, EXIT_BLOCK_PTR): Define.
	(init_flow): Do not create ppols; allocate entry/exit block.
	(free_edge, alloc_block, expunge_block, unchecked_make_edge): Use GGC.
	(compact_blocks): Don't update tree_bb_root and tree_phi_root.
	* cfgrtl.c (rtl_merge_blocks): Clear head pointer.
	* regs.h: Protect against multiple inclusion.
	* tree-cfg.c (obstack_tree_ann_obstack, first_block_tree_and_obj,
	tree_bb_root): Kill.
	(build_tree_cfg, create_bb, remove_bb, delete_tree_cfg): Don't
	touch tree_bb_root and tree_phi_root.
	(create_block_annotations): Do not initialize obstack.
	(free_block_annotations): Do not free obstack.
	(create_block_annotation): Use GGC.
	* tree-dfa.c (tree_phi_root): Kill.
	* tree-flow.h (bb_ann, bb_ann_d): Declare.  Add `phi_nodes' field.
	* tree-phinodes.c (create_phi_node, add_phi_arg, remove_phi_node,
	remove_all_phi_nodes_for): Use `phi_nodes' field in the bb
	annotation instead of tree_phi_root.
	* tree-flow-inline.h (phi_nodes, set_phi_nodes): Likewise.
	(add_dom_child, clear_dom_children): Use GGC.
	* tree-ssa-pre.c (code_motion): Use `phi_nodes' field in the bb
	annotation instead of tree_phi_root.
	* varray.h (union varray_data): Make basic_block_def and edge_def
	varrays garbage collectable.

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

	* c-common.c (c_address_looks_like_offsetof): New.
	* c-common.h (c_address_looks_like_offsetof): Declare.
	* c-typeck.c (build_unary_op) <ADDR_EXPR>: Use it.  Don't lower
	address references not destined for offsetof.
	(c_expand_return): Only look inside ARRAY_REF and COMPONENT_REF
	when looking for returning address of local variable.
	* expr.c (expand_expr_1): Don't dereference size of unbounded arrays.
	* gimplify.c (gimplify_addr_expr): Only fold address of variable size
	array elements.
	* tree-simple.c (is_gimple_min_invariant): Also check
	is_gimple_variable before disallowing offset address for type.
	* tree-ssa-ccp.c (maybe_fold_offset_to_aggregate_ref): New.
	(maybe_fold_offset_to_component_ref): Use it.
	(maybe_fold_stmt_indirect, maybe_fold_stmt_plus): Likewise.
	(maybe_fold_offset_to_array_ref): Likewise.  Don't fail for division
	remainder non-zero.
	* varasm.c (initializer_constant_valid_p) <ADDR_EXPR>: Use
	handled_component_p and look inside references.
	<MINUS_EXPR>: Always look past widening casts.

2003-12-07  Zdenek Dvorak  <rakdver@atrey.karlin.mff.cuni.cz>

	* tree-cfg.c (compute_dominance_frontiers): Don't assume that
	the first block has index 0.

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

	* cgraph.c (create_edge): Rename to ...
	(cgraph_create_edge): ... this one; accept call_expr as operand.
	(cgraph_edge): New function
	(cgraph_remove_edge): Use edge as argument
	(cgraph_record_call, cgraph_remove_call): Kill.
	(clone_cgraphedge): New function.
	* cgraph.h (cgraph_edge): Add call_expr argument; add chain_next.
	(cgraph_record_call, cgraph_remove_call): Kill prototype.
	(cgraph_remove_call, cgraph_inline_p): Update prototype.
	(cgraph_clone_edge): Declare.
	* cgraphunit.c (cgraph_finalize_function): Update use of
	cgraph_remove_edge
	(record_call_1): Use cgraph_create_edge; record builtins too.
	(cgraph_create_edges): Accept node instead of decl.
	(cgraph_analyze_function): Update use cgraph_create_edges.
	(cgraph_inline_p): Accept edge.
	* tree-inline.c (inline_data): Replace decl and current_decl
	by node and current_node.
	(copy_body_r): Clone edges.
	(expand_call_inline): Do not create inlined edges.
	(optimize_inline_call): Set id->current_node, id->node.
	* tree-optimize.c (tree_rest_of_compilation): Update cgraph edges after
	compiling.

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

	* tree-ssa-loop.c (dump_file, dump_flags): Only declare with
	checking enabled.
	(tree_ssa_loop_opt): Mark arguments with ATTRIBUTE_UNUSED.

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

	* function.h (struct function): Add last_label_uid.
	* tree-cfg.c (set_bb_for_stmt): Use it.
	(delete_tree_cfg): Clear label_to_block_map.

	* gimple-low.c (lower_stmt_body): Export.
	(lower_stmt): Allow data to be null.
	* gimplify.c (declare_tmp_vars): Make static.
	(push_gimplify_context): Export.
	(pop_gimplify_context): Export.  Put the temps somewhere.
	(gimplify_body): Don't declare_tmp_vars here.
	* tree-flow.h, tree-simple.h: Update for new decls.

	* tree-mudflap.c (mf_build_string): New.
	(mudflap_c_function_decls): Push and pop gimplify context, don't
	gimplify here.  Dump pass 1.
	(mudflap_c_function_ops): Similarly.
	(mf_decl_cache_locals): Gimplify eveything as we go along.
	(mf_build_check_statement_for): Likewise.
	(mf_mostly_copy_tree_r): Remove.
	(mf_varname_tree): Use mf_build_string.
	(mf_file_function_line_tree): Rewrite.
	(mf_offset_expr_of_array_ref): Remove.
	(mx_xfn_indirect_ref): Remove.
	(mf_xform_derefs_1): New.
	(mf_xform_derefs): Rewrite to expect gimple.
	(mx_register_decls): Use build_function_call_expr.
	(mudflap_enqueue_constant): Use mf_build_string.
	* tree-optimize.c (tree_rest_of_compilation): Reorder mudflap bits.
	* tree-dump.c (dump_files): Split mudflap to parts 1 and 2.
	* tree.h (enum tree_dump_index): Likewise.

2003-12-06  Zdenek Dvorak  <rakdver@atrey.karlin.mff.cuni.cz>

	* tree-ssa-loop.c: New.
	* Makefile.in (tree-ssa-loop.o): New.
	* common.opt (ftree-loop-optimize): Add.
	* flags.h (flag_tree_loop): Declare.
	* opts.c (decode_options): Enable flag_tree_loop at -O1.
	(common_handle_option): Handle OPT_ftree_loop_optimize.
	* timevar.def (TV_TREE_LOOP): New.
	* toplev.c (flag_tree_loop): New.
	(f_options): Add -ftree-loop-optimize.
	* tree-cfg.c (build_tree_cfg): Remove disabled loop optimizer
	initialization.
	(tree_make_forwarder_block): Update phi nodes.
	(tree_loop_optimizer_init): Don't call force_single_succ_latches.
	(tree_try_redirect_by_replacing_jump): Comment fix.
	* tree-dump.c (dump_files): Add .loop dump.
	* tree-flow.h (tree_ssa_loop_opt, set_phi_nodes): Declare.
	* tree-optimize.c (optimize_function_tree): Call tree_ssa_loop_opt.
	* tree.h (enum tree_dump_index): Add TDI_loop.
	* tree-flow-inline.h (set_phi_nodes): New.
	* doc/invoke.texi (-fdump-tree-loop, -ftree-loop-optimize): Document.

2003-12-05  Jeff Law  <law@redhat.com>

	* tree-dfa.c (mark_new_vars_to_rename): Change VARS_TO_RENAME to be
	a "bitmap" instead of an "sbitmap".  Callers updated.
	* tree-must-alias.c (promote_var): Likewise.
	(tree_compute_must_alias): Likewise.
	* tree-phinodes.c (remove_all_phi_nodes_for): Likewise.
	* tree-ssa-dom.c (tree_ssa_dominator_thread_jumps): Likewise.
	(tree_ssa_dominator_optimize): Likewise.
	(tree_ssa_dominator_optimize_1): Likewise.
	* tree-ssa-pre.c (pre_expression): Likewise.
	(tree_perform_ssapre): Likewise.
	* tree-ssa.c (rewrite_into_ssa): Likewise.
	(insert_phi_nodes): If VARS_TO_RENAME is zero, then examine
	each node to determine if we need to insert a PHI.
	(prepare_operand_for_rename): If VARS_TO_RENAME is zero, then
	assume the operand needs renaming.
	* tree-ssa-ccp.c (substitute_and_fold): Change VARS_TO_RENAME to
	be a "bitmap" instead of an "sbitmap".  Callers updated.
	(tree_ssa_ccp): Likewise.  Also make sure timevar_pop encloses
	entire function.
	(scalarize_modify_expr): Likewise.
	* tree-sra.c (create_scalar_copies): Change VARS_TO_RENAME to
	be a "bitmap" instead of an "sbitmap".  Callers updated.
	(tree_sra): Likewise.
	* tree-optimize.c (optimize_function_tree): Make VARS_TO_RENAME
	be a "bitmap" instead of an "sbitmap".
	* tree-flow.h: Update various prototypes.

2003-12-05  Zdenek Dvorak  <rakdver@atrey.karlin.mff.cuni.cz>

	* tree-cfg.c (remove_useless_stmts_goto, remove_useless_stmts): Move
	handling of factored_computed_goto ...
	(disband_implicit_edges): ... here.

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

	* tree-eh.c (tree_could_trap_p): Fix warning.
	* expr.c (expand_expr): Fix warning on uninitialized last.

2003-12-04  Jeff Law  <law@redhat.com>

	* tree-ssa.c (rewrite_trees): Do not unconditionally overwrite
	variables set by statements.  Let replace_variable do any
	required rewriting.

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

	* c-parse.in (primary): Use annotate_with_locus instead of
	STMT_LINENO for STMT_EXPR.
	* c-simplify.c (gimplify_stmt_expr): Likewise.

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

	* tree-dump.c (dump_files): Reorder tailcall and mustalias
	* tree.h (tree_dump_index): Likewise.
	* tree-optimize.c (optimize_function_tree): Do tail call after mustalias.

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

	* tree-dfa.c (opf_none, opf_is_def, opf_no_vops): Change to #define.

2003-12-04  Canqun Yang  <canqun@nudt.edu.cn>

	* stor-layout.c (update_alignment_for_field): Export.
	* tree.h (update_alignment_for_field): Declare.

2003-12-03  Andrew Haley  <aph@redhat.com>

	* tree-eh.c (tree_could_trap_p): Add division instructions.
	* expr.c (expand_expr): Check the EH region of an expression and
	mark all the insns that result from its expansion with the
	appropriate REG_EH_REGION.

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

	* tree-cfg.c (verify_addr_expr, verify_stmt, tree_node_shared_p,
	verify_stmts):  New functions.
	(verify_flow_info): Remove PHI checking code.
	* tree-flow.h (verify_stmt, verify_stmts): Declare.
	* tree-inline.h (walk_tree, walk_tree_without_duplicates): Move
	prototypes ...
	* tree.h (walk_tree, walk_tree_without_duplicates): ... here.

2003-12-03  Jan Hubicka  <jh@suse.cz>
	    Diego Novillo <dnovillo@redhat.com>

	* tree-ssa.c (verify_def, verify_use, verify_phi_args): New static
	functions.
	(verify_ssa): New global function.
	* tree-flow.h (verify_ssa): Declare.
	* tree-optimize.c (optimize_function_tree): Call it.

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

	* timevar.def (TV_TREE_SSA_VERIFY): New timer.
	* tree-sra.c (create_scalar_copies): Always mark the previous
	variables on the LHS for renaming.
	Do not emit unnecessary assignments from VA_ARG_EXPRs.
	(scalarize_modify_expr): Similarly, when scalarizing the LHS of a
	COMPONENT_REF assignment.
	* tree-must-alias.c (tree_compute_must_alias): Do not promote
	variables with hidden uses.
	* tree-ssa-ccp.c (set_rhs): When replacing the whole statement, reset
	SSA_NAME_DEF_STMT for all the SSA_NAMEs in vdef and def
	operands.

2003-12-03  Zdenek Dvorak  <rakdver@atrey.karlin.mff.cuni.cz>
	    Diego Novillo  <dnovillo@redhat.com>

	* tree-dfa.c (opf_no_vops): New.
	(add_stmt_operand): Don't create virtual operands when opf_no_vops
	is passed in flags.
	(get_expr_operands): Set opf_no_vops flag before diving into the
	operand of an ADDR_EXPR node.

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

	* tree-simple.c (is_gimple_min_invariant): Disallow offset of
	address of a scalar.

	* c-parse.in (primary): Set STMT_LINENO on STMT_EXPR.
	* c-simplify.c (gimplify_stmt_expr): Be prepared for last_stmt
	to be null.

2003-12-03  Daniel Berlin  <dberlin@dberlin.org>

	Fix PR 13177
	* tree-ssa-pre.c (code_motion): Do phi nodes last, and rearrange
	how we decide what temporary to choose so that we get it right.

2003-12-03  Zdenek Dvorak  <rakdver@atrey.karlin.mff.cuni.cz>

	* tree-dfa.c (get_expr_operands): Don't record VUSEs for invariant
	adresses.

2003-12-03  Brian Booth  <bbooth@redhat.com>

	* tree-pretty-print.c (dump_phi_nodes): Removed superfluous ampersand.

2003-12-03  Jeff Law  <law@redhat.com>

	* ggc-page.c: Resync with mainline sources.  Remove tree-ssa
	specific hack which disabled special GC pagesizes for 2 operand
	tree expressions.

	* tree-ssa.c (mark_def_sites): Call prepare_operand_for_rename
	on the VDEF_RESULT as well, providing a dummy uid argument.

	* tree-phinodes.c: Include rtl.h for ceil_log2.
	(ideal_phi_node_len): New function.
	(resize_phi_node): Make static.
	(make_phi_node): Use ideal_phi_node_len.
	(add_phi_arg): Likewise.
	* tree.h (resize_phi_node): Remove prototype.
	* Makefile.in (tree-phinodes.o): Depend on $(RTL_H).

2003-12-03  Zdenek Dvorak  <rakdver@atrey.karlin.mff.cuni.cz>

	* tree-cfg.c: (make_edges): Eliminate fallthru to exit.
	(make_ctrl_stmt_edges): Nonlocal goto handling moved to
	make_goto_expr_edges.
	(make_goto_expr_edges): Remove simple gotos.
	(cfg_remove_useless_stmts_bb): Goto removal cancelled.
	(cleanup_cond_expr_graph, cleanup_switch_expr_graph):
	Replaced by ...
	(cleanup_control_expr_graph): New.
	(cleanup_control_flow): Use it.
	(disband_implicit_edges): New.
	(tree_find_edge_insert_loc): Never insert before a control statement.
	(tree_split_edge, thread_jumps, tree_try_redirect_by_replacing_jump,
	tree_redirect_edge_and_branch): Work over no-gotos form.
	(tree_verify_flow_info): Check no-gotos form invariants.
	* tree-pretty-print.c (pp_cfg_jump, dump_implicit_edges): New.
	(dump_generic_bb_buff): Call dump_implicit_edges.
	* tree-flow.h (cleanup_cond_expr_graph, cleanup_switch_expr_graph):
	Declaration removed.
	(cleanup_control_expr_graph, delete_tree_ssa, disband_implicit_edges):
	Declare.
	* tree-optimize.c (tree_ssa_finish): New.
	(optimize_function_tree): Call it.
	* tree-ssa-dom.c (thread_jumps_walk_stmts, optimize_stmt): Use
	cleanup_control_expr_graph.
	* tree-ssa.c (delete_tree_ssa): Export, work even if there are no
	referenced_vars.
	(rewrite_out_of_ssa): Don't call it.

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

	* tree-ssa.dom.c (tree_ssa_domionator_thread_jumps): Mark back edges.
	(thread_across_edge): Do not thread across loop headers.

	* Makefile.in (tree-optimize.o): Depend on cgraph.h
	* cgraph.h (cgraph_preserve_function_body_p): Declare.
	* cgraphunit.c (cgraph_preserve_function_body_p): New function.
	* tree-optimize.c: Include cgraph.h
	(clear_decl_rtl): Kill.
	(tree_rest_of_compilation): Use cgraph_preserve_function_body_p;
	do not clear DECL_RTL; do final ggc in the pushed context for nested
	functions;

2003-12-02  Jeff Law  <law@redhat.com>

	* tree-ssa-dom.c (optimize_stmt): Accept and pass down dominator
	walker structure instead of individual varrays.  Callers updated.
	(eliminate_redundant_computations): Likewise.
	(simplify_rhs_and_lookup_avail_expr): Likewise.  Cache and update
	a dummy COND_EXPR when querying the hash tables when transforming
	DIV/MOD into RSHIFT/BIT_AND or ABS_EXPR into NEG_EXPR.
	(dom_opt_walk_stmts): Don't reload the block data pointer each
	iteration of the loop.  Load it once outside the loop.

	* tree-dfa.c (cleanup_operand_arrays): Avoid creating a new
	varray for the vuse operands.

	* tree-ssa-dom.c (extract_range_from_cond): Use int_const_binop to
	avoid creating useless tree nodes.

	* tree-phinodes.c (add_phi_arg): If we receive a new node from
	resize_phi_node, then release the old node and update the PHI
	chain.

2003-12-02  Brian Booth  <bbooth@redhat.com>

	* tree-pretty-print.c (dump_phi_nodes): Added code to always show phi
	nodes of regular gimple scalars.
	(dump_generic_bb_buff): Removed condition upon which to show phi nodes.

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

	* tree-optimize.c (optimize_function_tree): Invoke ggc_collect in
	between optimization passes.

2003-12-02  Daniel Berlin  <dberlin@dberlin.org>

	* tree-sra.c (can_be_scalarized_p): Print details about why something
	could not be scalarized to the dump file.

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

	* Makefile.in (OBJS-common): Add tree-phinodes.o.
	(tree-phinodes.o): Add dependencies.
	(GTFILES): Add tree-phinodes.c.
	* tree-phinodes.c: New file.
	* tree-dfa.c (create_phi_node): Moved to tree-phinodes.o.
	(add_phi_arg, remove_phi_arg, remove_phi_arg_num): Similarly.
	(remove_phi_node, remove_all_phi_nodes_for): Similarly.
	* tree-ssa.c (init_tree_ssa): Initialize PHI node management.
	(delete_tree_ssa): Finalize PHI node management.
	* tree.c (dump_tree_statistics): Dump PHI node stats.
	(make_phi_node, resize_phi_node): Moved to tree-phinodes.o.
	* tree.h (init_phinodes): Prototype.
	(fini_phinodes, release_phi_node): Likewise.
	(phinodes_print_statistics): Likewise.

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

	* tree-dfa.c (get_expr_operands): Don't handle PLUS_EXPR inside
	INDIRECT_REF.
	* tree-ssa-ccp.c (maybe_fold_offset_to_array_ref): Use int_const_binop.
	(maybe_fold_offset_to_component_ref): Likewise.
	(maybe_fold_stmt_indirect): Likewise.
	(maybe_fold_stmt_plus): Expand ARRAY_REF when seen with addend.
	* fold-const.c (int_const_binop): Export.
	* tree.h (int_const_binop): Declare.

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

	* basic-block.h (tree_phi_root): New variable.
	* cfg.c: Include tree-flow.h.
	(compact_blocks): Compact tree_phi_root
	* tree-cfg.c (build_tree_cfg): Initialize tree_phi_root.
	(create_bb, remove_bb, delete_tree_cfg): Update tree_phi_root.
	* tree-dfa.c (tree_phi_root): Declare.
	(create_phi_node, add_phi_arg, remove_phi_node,
	remove_all_phi_nodes_for):  Always use accessor functions for
	getting, varray for setting phis.
	* tree-ssa-pre.c (code_motion): Likewsie.
	* tree-flow-inline.h (phi_nodes): Use varray.
	* tree-flow.h (bb_ann_d): Remove phi_nodes.

	* tree-ssanames.c (free_ssanames): Do not use deleteable GTY flag.

2003-11-30  Jan Hubicka  <jh@suse.cz>

	* tree-optimize.c (tree_rest_of_compilation): Move ggc_collect call to
	the end of function; keep clearing of DECL_SAVED_TREE to the cgraph
	code.

2003-11-30  Jan Hubicka  <jh@suse.cz>

	* cgraphunit.c (cgraph_inline_context): New structure.
	(cgrpah_mark_inline, cgraph_check_inline_limits): Use context
	instead of passing all arguments by hand.
	(cgraph_create_inline_context, cgraph_free_inline_context,
	cgraph_inline_context_set_caller, cgraph_inline_context_clear_caller,
	cgraph_inline_context_set_callee, cgrpah_inline_context_clear_callee,
	cgraph_recursive_inlining_p): New static function.
	(cgraph_decide_inline*):  Reorganize to use context.

2003-11-30  Paul Brook  <paul@nowt.org>

	* Makefile.in (GTFILES): Remove stray '\'.

2003-11-30  Daniel Berlin  <dberlin@dberlin.org>

	* c-config-lang.in: Move tree-alias-* from here
	* Makefile.in (GTFILES): To here.
	* tree-alias-ander.c: Include bitmap.h
	(andersen_function_call): Updated to take address of variables
	in an ADDR_EXPR in a CALL_EXPR.
	* tree-alias-common.h (struct tree_alias_ops): Update arguments to
	function_call.
	* tree-alias-type.h (struct alias_typevar_common): Add varnum.
	* tree-alias-common.c: Include bitmap.h, and function.h.
	s/global_var/pta_global_var/g.
	(addrargs): New static variable.
	(pta_global_var): Ditto.
	(find_func_decls): Remove.
	(find_func_aliases): Take one argument, update all callers.
	Handle (cast) [addr-expr] [var].
	Handle COMPONENT_REF of an  INDIRECT_REF.
	Pass info about ADDR_EXPR arguments to function_call function.
	(deal_with_call_aliasing): New function.
	(call_may_return): New function.
	(get_alias_var_decl): Call find_func_aliases on the DECL_INITIAL
	of a global var.
	Use ALIAS_TVAR_VARNUM, instead of VARRAY_ACTIVE_SIZE (alias_vars) - 1.
	(get_alias_var): Handle REALPART_EXPR and IMAGPART_EXPR.
	Return NULL in default case.
	(intra_function_call): Remove wrong code.
	(create_fun_alias_var): Use simple_assign, not addr_assign.
	Set up ALIAS_TVAR_VARNUM when creating an alias var.
	(create_fun_alis_var_ptf): Ditto on ALIAS_TVAR_VARNUM.
	(create_alias_var): Ditto.
	(create_alias_vars):  Build pta_global_var here.
	Walk unexpanded_var_list.
	Walk the statements in basic blocks.
	(delete_alias_vars): Correct ip_partial case.
	Free addrargs.
	(init_alias_vars): Create addrargs.

2003-11-29  Jan Hubicka  <jh@suse.cz>

	* Makefile.in (tree-ssanames.o): Depend on gt-tree-ssanames.h.
	(tree-eh.o): Depend on gt-tree-eh.h.
	(gr-tree-ssanames.h, gt-tree-eh.h): New targets.
	(GTFILES): Add tree-ssanames.c, tree-eh.c
	* tree-eh.c: Include ggc.h and gt-tree-eh.h
	(lower_eh_constructs): Allecate throw_stmt_table in ggc.
	* tree-ssanames.c: Include ggc.h and gt-tree-ssanames.h

	* function.h (struct function): Add saved_tree/saved_args.
	* toplev.c (rest_of_compilation): Move code to  clear cfun and
	DECL_SAVED_INSNS and call to ggc_collect to ...
	* tree-optimize.c (tree_rest_of_compilation): ... this function. Use
	cfun to save/restore function body.

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

	* gimplify.c (create_tmp_var_raw): Split out from create_tmp_var.
	(create_tmp_var): Use it.
	(create_tmp_alias_var): Remove.
	* tree-alias-common.c, tree-dfa.c: Use create_tmp_var_raw instead.
	* tree-simple.h: Update decls.

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

	* gimple-low.c (lower_function_body): Call lower_bind_expr
	to handle the outermost BIND_EXPR.

2003-11-28  Jan Hubicka  <jh@suse.cz>

	* tree-ssa.c (remove_annotations_r): Kill.
	(delete_tree_ssa): Remove annotations using statement walk;
	kill argument fndecl.
	(rewrite_out_of_ssa): Update call.

2003-11-27  Andrew MacLeod  <amacleod@redhat.com>

	* tree-ssa-live.c (register_ssa_partition): Abort if a virtual SSA
	version is registered.
	(create_ssa_var_map): Always process PHI nodes.
	* tree-ssa.c (Eliminate_virtual_phis): Rename from
	eliminate_extraneous_phis, and look specifically for virtuals.
	(rewrite_out_of_ssa): Eliminate virtual PHI nodes before building
	partitions.

2003-11-27  Zdenek Dvorak  <rakdver@atrey.karlin.mff.cuni.cz>

	* tree-ssa-ccp.c (get_strlen): Mark the visited variables.
	(ccp_fold_builtin): Changed due to changed calling convention of
	get_strlen.

2003-11-26  Diego Novillo  <dnovillo@redhat.com>

	Revert

	2003-11-25  Jeff law  <law@redhat.com>

	    * Makefile.in (OBJS-common): Add tree-phinodes.o.
	    (tree-phinodes.o): Add dependencies.
	    * tree-phinodes.c: New file.
	    * tree-dfa.c (create_phi_node): Moved to tree-phinodes.o.
	    (add_phi_arg, remove_phi_arg, remove_phi_arg_num): Similarly.
	    (remove_phi_node, remove_all_phi_nodes_for): Similarly.
	    * tree-ssa.c (init_tree_ssa): Initialize PHI node management.
	    (delete_tree_ssa): Finalize PHI node management.
	    * tree.c (dump_tree_statistics): Dump PHI node stats.
	    (make_phi_node, resize_phi_node): Moved to tree-phinodes.o.
	    * tree.h (init_phinodes): Prototype.
	    (fini_phinodes, release_phi_node): Likewise.
	    (phinodes_print_statistics): Likewise.

2003-11-25  Jan Hubicka  <jh@suse.cz>

	* tree-mustalias.c (promote_var): Do not clear
	may_point_to_global_mem.

2003-11-25  Jeff law  <law@redhat.com>

	* domwalk.c (walk_dominator_tree): Indicate to the block local
	data initializer if the block local data is new or recycled.
	* domwalk.h (struct dom_walk_data): Corresponding changes.
	* tree-ssa-dom.c (dom_opt_initialize_block_local_data): Accept and use
	"recycled" argument.  For recycled structures, only clear varrays
	that have been initialized.  For new blocks, do not initialize
	varrays here.
	(dom_opt_finalize_block): When threading across edges, if the
	true/false varrays have not been initialized, then the limit is zero.
	Only clear block local varrays that have been initialized.
	(record_equivalences_from_incoming_edge): If necessary, initialize
	block local const_and_copies.
	(dom_opt_walk_stmts): If necessary, initialize block local
	stmts_to_rescan.
	(record_var_is_nonzero): If necessary, initialize block local
	nonzero_vars.
	(record_cond_is_true): If necessary, initialize block local
	true_exprs.
	(record_cond_is_false): If necessary, initialize block local
	false_exprs.
	(lookup_avail_expr): If necessary, initialize block local
	avail_exprs.
	(record_range): If necessary, initialize block local vrp_varaibles.
	* tree-ssa.c
	* tree-ssa.c (rewrite_initialize_block_local_data): Accept and use
	"recycled" argument.  For recycled structures, only clear varrays
	that have been initialized.  For new blocks, do not initialize
	varrays here.
	(rewrite_finalize_block): Only clear block local varrays that have
	been initialized.
	(register_new_def): If necessary, initialize block local defs.

	* tree-ssa-dom.c (get_eq_expr_value): Return a struct rather than
	a tree node.
	(record_equivalences_from_incoming_edge): Corresponding changes.
	(find_equivalent_equality_comparison): Use tree_int_cst_XXX rather
	then building and folding nodes.
	(simplify_cond_and_lookup_avail_expr): Likewise.

	* Makefile.in (OBJS-common): Add tree-phinodes.o.
	(tree-phinodes.o): Add dependencies.
	* tree-phinodes.c: New file.
	* tree-dfa.c (create_phi_node): Moved to tree-phinodes.o.
	(add_phi_arg, remove_phi_arg, remove_phi_arg_num): Similarly.
	(remove_phi_node, remove_all_phi_nodes_for): Similarly.
	* tree-ssa.c (init_tree_ssa): Initialize PHI node management.
	(delete_tree_ssa): Finalize PHI node management.
	* tree.c (dump_tree_statistics): Dump PHI node stats.
	(make_phi_node, resize_phi_node): Moved to tree-phinodes.o.
	* tree.h (init_phinodes): Prototype.
	(fini_phinodes, release_phi_node): Likewise.
	(phinodes_print_statistics): Likewise.

2003-11-25  Jan Hubicka  <jh@suse.cz>

	* tree-inline.c (save_body): New body
	* tree-inline.h (save_body): Declare.
	* tree-optimize.c (tree_rest_of_compilation): Save function tree
	properly.

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

	* gimplify.c (canonicalize_addr_expr): New.
	(gimplify_conversion): Use it.  Canonicalize after nop cast removal.
	* tree-simple.c (is_gimple_min_invariant): Remove STRING_CST cast
	special case.

2003-11-24  Jeff Law  <law@redhat.com>

	* flow.c (count_or_remove_death_notes_bb): New.  Extracted from
	count_or_remove_death_notes.
	(count_or_remove_death_notes): Use EXECUTE_IF_SET_IN_SBITMAP.

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

	PR 13174, PR 13143
	* gimplify.c (cpt_same_type): Allow different ARRAY_TYPEs with
	the same base type.

2003-11-24  Daniel Berlin  <dberlin@dberlin.org>

	Fix PR/13163
	* tree-ssa-pre.c (append_eref_to_block): Delete.
	(insert_euse_in_preorder_dt_order_1): Ditto.
	(insert_one_operand): Take an extra argument, because
	avdefs may need to be changed.
	(clear_all_eref_arrays): Use FOR_ALL_BB.
	(insert_occ_in_preorder_dt_order): Stop appending to bb eref arrays.
	Use FOR_ALL_BB.
	(insert_euse_in_preorder_dt_order): Rewrite to just build a new varray
	with only the EPHI's and EUSE's, and then sort it.
	(pre_expression): Don't use bb based erefs array when printing
	expressions.
	(split_critical_edges): Just use FOR_ALL_BB.
	(tree_perform_ssapre): Pre-split entry block successor edge if the
	successor block has multiple preds.

	* tree-flow.h (struct bb_ann_d): Remove erefs varray.

2003-11-24  Daniel Berlin  <dberlin@dberlin.org>

	* tree-cfg.c (cleanup_tree_cfg): FOR_EACH_BB -> FOR_ALL_BB when
	clearing dom children, because the entry block has dom_children
	too.
	* tree-ssa.c (build_dominator_tree): Ditto.

2003-11-24  Diego Novillo  <dnovillo@redhat.com>

	* tree-cfg.c (compute_dominance_frontiers_1,
	compute_dominance_frontiers): Move from ssa.c.
	* tree-flow.h (compute_dominance_frontiers): Declare.
	* Makefile.in (tree-ssa.o, tree-ssa-live.o, tree-ssa-pre.o,
	tree-optimize.o): Don't depend on ssa.h.
	* tree-ssa.c: Don't include ssa.h.
	* tree-ssa-live.c: Likewise.
	* tree-ssa-pre.c: Likewise.
	* tree-optimize.c: Likewise.

2003-11-24  Jan Hubicka  <jh@suse.cz>

	* fold-const.c (fold):  Do not return early when
	optimizing COMPONENT_REF and constant.

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

	* objc/objc-act.c (build_protocol_expr): Use convert instead of
	smashing TREE_TYPE.

2003-11-23  Andrew MacLeod  <amacleod@redhat.com>

	* tree-ssa-live.h (SSANORM_PERFORM_TER, SSANORM_COMBINE_TEMPS,
	SSANORM_REMOVE_ALL_PHIS): New flag macros.
	* tree-ssa.c (replace_variable): Return true if var was rewritten.
	(eliminate_extraneous_phis): Dump var map to file if checking triggers
	an abort.
	(rewrite_trees): Set modified_stmt if stmt was changed.
	(remove_ssa_form): Move more of rewrite_out_of_ssa to make it serve
	all the same functions based on new flags in tree-ssa-live.h.
	(rewrite_out_of_ssa): Call remove_ssa_form.

2003-11-23  Jan Hubicka  <jh@suse.cz>

	* tree-cfg.c (tree_verify_flow_info): Check that ENTRY/EXIT block
	has no instructions associated with it.

2003-11-22  Jeff Law  <law@redhat.com>

	* tree-ssa-names.c (release_ssa_name): Use SSA_NAME_IN_FREE_LIST
	instead of checking SSA_NAME_DEF_STMT being null.
	* tree.h (SSA_NAME_DEF_STMT): Use chain field rather than the
	def_stmt field.
	(SSA_NAME_OCCURS_IN_ABNORMAL_PHI): Use existing flag from tree_common.
	(SSA_NAME_IN_FREE_LIST): Define.
	(struct tree_ssa_name): Kill DEF_STMT and OCCURS_IN_ABNORMAL_PHI fields.

2003-11-22  Zdenek Dvorak  <rakdver@atrey.karlin.mff.cuni.cz>

	* tree-pretty-print.c (dump_generic_node): Remove superfluous ';'.

2003-11-22  Diego Novillo  <dnovillo@redhat.com>

	* Makefile.in (simple-break-elim.o): Remove.
	(simple-goto-elim.o): Remove.
	(tree-dchain.o): Remove.
	* simple-break-elim.c: Remove.
	* simple-goto-elim.c: Remove.
	* tree-dchain.c: Remove.
	* tree-dchain.h: Remove.

2003-11-22  Daniel Berlin  <dberlin@dberlin.org>

	* tree-ssa-pre.c (build_dfs_id_array_1): > should be >=
	(build_dfn_array): Ditto.

2003-11-21  Diego Novillo  <dnovillo@redhat.com>

	* Makefile.in (tree-dfa.o): Add dependency on $(TREE_DUMP_H)
	* tree-dfa.c: Include tree-dump.h
	(compute_alias_sets): Call dump_function_to_file.
	(may_access_global_mem_p): Check if the base address of _REF nodes
	may point to global memory.

	* cfgcleanup.c (try_crossjump_to_edge): Initialize newpos1 and
	newpos2.

2003-11-21  Jeff Law  <law@redhat.com>

	Revert:

	2003-11-21  Jan Hubicka  <jh@suse.cz>

		* tree-dfa.c (get_expr_operands): Fix handling of CALL_EXPR.
		* tree-must-alias.c (tree_compute_must_alias): promote pointers.
		(find_addressable_vars):  Deal with complex constant
		expressions; do not clear may_point_to_global_mem.

2003-11-21  Jeff Law  <law@redhat.com>

	* Makefile.in (domwalk.o): Depend on $(GGC_H).
	* domwalk.c: Include ggc.h.
	(walk_dominator_tree): Manage allocation/deallocation and
	pushing/popping of the toplevel block data pointer here.
	Use callback to initialize the block local data.
	(init_walk_dominator_tree): New function.
	(fini_walk_dominator_tree): Likewise.
	* domwalk.h (struct dom_walk_data): Add callback to initialize
	block local data.  Add field for sizeof block local data.
	Add "private" field free_block_data.
	(init_dominator_tree, fini_dominator_tree): Prototype.
	* tree-ssa-dom.c (dom_opt_initialize_local_data): New function.
	(tree_ssa_dominator_optimize_1): Initialize new fields in the
	dominator walker structure.  Initialize and finalize the dominator
	walker.  Slightly reorder code to make it more readable..
	(dom_opt_initialize_block): No longer deal with allocation and
	initialization of block local data.
	(dom_opt_finalize_block): Similarly for deallocation of block
	local data.
	* tree-ssa.c (rewrite_block_data): New structure.
	(rewrite_initialize_block_local_data): New function.
	(rewrite_initialize_block): No longer deal with allocation and
	initialization of block local data.
	(rewrite_into_ssa): Initialize new fields in the dominator walker
	structure.  Initialize and finalize the dominator walker.
	(rewrite_initialize_block): No longer deal with allocation and
	initialization of block local data.
	(rewrite_optimize_stmts): Deal with changes in the dominator
	walker structure.
	(rewrite_finalize_block): No longer with deallocation of block
	local data.

	* tree-dfa.c (add_vdef, cleanup_voperand_arrays): Use NUM_VDEFS.
	(mark_new_vars_to_rename, collect_dfa_status_r): Likewise.
	* tree-pretty-print.c (dump_vops): Likewise.
	* tree-sra.c (create_scalar_copies): Likewise.
	* tree-ssa-dce.c (stmt_useful_p, process_worklist): Likewise.
	* tree-ssa-live.c (create_ssa_var_map): Likewise.
	(calculate_live_on_entry): Likewise.
	* tree-ssa-pre.c (process_left_occs_and_kills): Likewise.
	* tree-ssa.c (mark_def_sites, rewrite_stmt): Likewise.
	* tree.h (NUM_VDEFS): Define.
	* tree-ssa-ccp.c (visit_stmt): Use NUM_VDEFS.  Fix thinko in last
	change.
	(initialize): Use NUM_VDEFS.

	* tree-dfa.c (add_vdef): Revamp to handle new method for
	recording vdefs.
	(cleanup_operand_arrays): Similarly.
	* tree-sra.c (create_scalar_copies): Similarly.
	* tree-ssa-ccp.c (visit_stmt, initialize): Similarly.
	* tree-ssa-dce.c (stmt_useful_p, process_worklist): Similarly.
	* tree-ssa-dom.c (cprop_into_stmt): Similarly.
	(record_equivalences_from_stmt): Similarly.
	* tree-ssa-live.c (create_ssa_var_map): Similarly.
	(calculate_live_on_entry): Similarly.
	* tree-ssa.c (mark_def_sites, rewrite_stmt): Similarly.
	* tree-ssa-pre.c (process_left_occr_and_kills): Similarly.
	* tree-inline.c (estimate_num_insns_1): Kill VDEF_EXPR.
	* tree-pretty-print.c (dump_generic_node) Kill VDEF_EXPR.
	(dump_vops): Dump VDEFs here.
	* tree.c (build_vdef_expr): Kill.
	* tree.h (build_vdef_expr): Kill prototype.
	(VDEF_RESULT, VDEF_OP): Revamp to handle new method for recording
	vdefs.
	* tree.def (VDEF_EXPR): Kill.

	* tree-cfg.c (cfg_remove_useless_stmts): Set both VAR and VAL to
	NULL anytime one of them is determined to be invalid.

2003-11-21  Andrew MacLeod  <amacleod@redhat.com>

	* tree-ssa-live.c (compact_var_map): Fix typo.  Clear correct field.
	(calculate_live_on_entry): Remove unneeded stmt.
	* tree-ssa-live.h (version_to_var): New.  Return variable associated
	with a specific SSA version.
	* tree-ssa.c (eliminate_build): Add check that ignored results don't
	have important arguments.  Allow ignored results.
	(coalesce_abnormal_edges): Allow non-relevant results to be ignored.
	(eliminate_extraneous_phis): Allow non-relevant results.  Check that
	no important arguments are being missed.
	(coalesce_vars): Non-partition variables are allowed now, just ignored.
	(rewrite_trees): New.  Split out from rewrite_out_of_ssa.  Perform tree
	rewriting step.
	(remove_ssa_form): New.  Allow rewriting of just specified variables.
	(rewrite_out_of_ssa): Use rewrite_trees and reorganize slightly to
	accommodate typechecking in eliminate_extraneous_phis.

2003-11-21  Jan Hubicka  <jh@suse.cz>

	* tree-dfa.c (get_expr_operands): Fix handling of CALL_EXPR.
	* tree-must-alias.c (tree_compute_must_alias): promote pointers.
	(find_addressable_vars):  Deal with complex constant expressions;
	do not clear may_point_to_global_mem.

2003-11-21  Jan Hubicka  <jh@suse.cz>

	* parser.c (cp_parser_postfix_expression): Initialize 's' to
	NULL_TREE.

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

	* Makefile.in (bitmap.o-warn, caller-save.o-warn, combine.o-warn,
	cgraphunit.o-warn, c-semantics.o-warn, emit-rtl.o-warn, expr.o-warn,
	fold-const.o-warn, genattrtab.o-warn, regmove.o-warn, tree.o-warn,
	varasm.o-warn, f/expr.o-warn, profile.o-warn): Remove.
	* bitmap.c (bitmap_first_set_bit): Abort if no non-zero word found.
	(bitmap_last_set_bit): Likewise.
	* combine.c (get_pos_from_mask): Always set *plen.

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

	* tree-dfa.c (get_expr_operands): Remove handling of PLUS_EXPR
	inside INDIRECT_REF.

2003-11-20  Diego Novillo  <dnovillo@redhat.com>

	* tree-nomudflap.c (nogo): Fix prototype.

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

	* except.c (output_function_exception_table): Strip nops.
	* gimplify.c (gimplify_addr_expr): Kill missing cast workaround.
	(cpt_same_type, check_pointer_types_r): New.
	(gimplify_body): Call it.
	* tree-inline.c (insert_decl_map): New.
	(remap_decl, remap_type, remap_block, copy_body_r,
	initialize_inlined_parameters, declare_return_variable,
	remap_save_expr, mark_local_for_remap_r): Use it.

2003-11-20  Frank Ch. Eigler  <fche@redhat.com>

	libstdc++/11696
	* c-pragma.c (handle_pragma_redefine_extname): Define always.
	(init_pragma): Activate #pragma redefine_extname for mudflap.

	* tree-inline.c (copy_tree_r): Propagate mf_marked-ness.
	* tree-mudflap.c (mudflap_c_function): Break into new
	_decls and _ops functions.
	(mudflap_c_function_decls): Avoid unnecessary tree copying.
	(mudflap_c_function_ops): Ditto.  Gimplify explicitly only for
	tree dumping.
	* tree-nomudflap.c: Add new stub functions.  Simplify error
	message emission throughout.
	* tree-mudflap.h: Corresponding changes.
	* tree-optimize.c (tree_rest_of_compilation): Call the _decl
	instrumentation before gimplification and ssa optimizations;
	call the _ops instrumentation after ssa optimizations.

2003-11-20  Diego Novillo  <dnovillo@redhat.com>

	Initial fix for PR optimization/12747

	* Makefile.in (OBJS): Add tree-sra.o
	* common.opt (ftree-sra): Add.
	* flags.h (flag_tree_sra): Declare.
	* gimplify.c (gimplify_addr_expr): Set TREE_INVARIANT
	when producing and address expression for a DECL node.
	* opts.c (decode_options): Enable SRA at -O1.
	(common_handle_option): Handle -ftree-sra.
	* timevar.def (TV_TREE_SRA): New timer.
	* toplev.c (flag_tree_sra): Define.
	* tree-cfg.c (stmt_ends_bb_p): Declare extern.
	(bsi_replace): Add boolean argument to specify whether to
	preserve EH region information.  Update all callers.
	(bsi_commit_edge_inserts): Also check the edge from ENTRY_BLOCK_PTR
	to basic block 0.
	Move loop body ...
	(bsi_commit_edge_inserts_1): ... here.
	* tree-dump.c: Add dump for SRA pass.
	* tree.h (enum tree_dump_index): Modify accordingly.
	(STRIP_USELESS_TYPE_CONVERSION): Define.  Update all callers to
	tree_ssa_useless_type_conversion.
	* tree-eh.c (add_stmt_to_eh_region): New function.
	* tree-flow.h (stmt_ends_bb_p): Declare.
	(add_stmt_to_eh_region): Declare.
	(tree_sra): Declare.
	(enum bsi_iterator_update): Mirror entries in
	enum tsi_iterator_update.
	* tree-optimize.c (optimize_function_tree): Call SRA pass
	after must-alias.
	* tree-sra.c: New file.
	* doc/invoke.texi: Document -ftree-sra and -fdump-tree-sra.

2003-11-20  Andrew Macleod  <amacleod@redhat.com>

	* tree-ssa.c (check_replaceable): Return false if the LHS is a
	DECL_HARD_REGISTER.

2003-11-20  Diego Novillo  <dnovillo@redhat.com>

	* tree-ssa-ccp.c (set_rhs): Replace with an empty statement when
	the replacement has no side effects.

2003-11-20  Jeff Law  <law@redhat.com>

	* Makefile.in (OBJS-common): Kill tree-ssa-copyprop.o.
	(tree-ssa-copyprop.o): Kill dependencies clause.
	* common.opt (tree-copyprop): Kill option.
	* flags.h (flag_tree_copyprop): Kill.
	* opts.c (decode_options): Don't set flag_tree_copyprop.
	(common_handle_option): Kill handling of -ftree-copyprop.
	* timevar.def (TV_TREE_COPYPROP): Kill.
	* toplev.c (flag_tree_copyprop): Kill.
	(lang_independent_options): Kill -ftree-copyprop.
	* tree-dump.c (dump_files): Kill .copyprop dump.
	* tree-flow.h (tree_ssa_copyprop): Kill prototype.
	(propagate_copy): Move prototype.
	* tree-optimize.c (optimize_function_tree): Kill -ftree-copyprop stuff.
	* tree.h (tree_dump_index): Kill TDI_copyprop.
	* tree-ssa-copyprop.c: Kill.
	* tree-ssa-dom.c (propagate_copy): Moved here from tree-ssa-copyprop.c.

	* tree-ssanames.c (free_ssanames): No longer a varray.
	(init_ssanames, make_ssa_name, release_ssa_name): Corresponding changes.

2003-11-20  Steven Bosscher  <stevenb@suse.de>

	* tree-ssanames.c (ssanames_print_statistics): Use ISO function
	declaration.  Print unsigned ints, not usinged longs.

2003-11-18  Daniel Berlin  <dberlin@dberlin.org>

	* tree-ssa-pre.c (rename_1): This should be static.
	(append_eref_to_block): Don't gc allocate.
	(clear_all_eref_arrays): Free the array rather than
	clear them.
	(rename_1): Ditto on both counts.
	(free_expr_info): Free the arrays.
	(collect_expressions): Don't gc allocate the arrays.

2003-11-18  Daniel Berlin  <dberlin@dberlin.org>

	* tree-ssa-pre.c (insert_one_operand): Handle self-referential
	ephi's properly.

2003-11-19  Jeff Law  <law@redhat.com>

	* tree-ssa-dom.c (true_exprs, false_exprs): New hash tables.
	(nonzero_vars): New varray.
	(dom_walk_block_data): Add true_exprs, false_exprs and nonzero_vars.
	(get_value_for, set_value_for): Accept additional argument indicating
	which table to use.  Callers updated.
	(tree_ssa_dominator_optimize_1): Initialize and wipe our new hash
	tables and varray appropriately.
	(dom_opt_initialize_block): Initialize new block local varrays for
	true expressions, false expressions and nonzero vars.  Update call
	to record_equivalences_from_incoming_edge.
	(dom_opt_finalize_block): Put equivalences from taken edges
	into the true_exprs and false_exprs hash tables.  Restore global
	state for true_exprs, false_exprs and nonzero_vars  too.
	(record_equivalences_from_incoming_edge): Accept dom_walk structure
	instead of a gazillion varrays.  Pass down block local
	true_exprs, false_exprs and nonzero_vars varrays to various children.
	(optimize_stmt):  Accept block local nonzero_vars argument.  Pass
	new varrays down to record_equivalences_from_stmt.
	(thread_jumps_walk_stmt): Pass new varrays down to
	record_equivalences_from_stmt.
	(dom_opt_walk_stmt): Pass new varrays down to optimize_stmt.
	(dump_dominator_optimizer_statistics): Dump new hash tables.
	(record_cond_is_true, record_cond_is_false): Record info into
	the true/false hash tables/varrays instead of the main expression
	varrays.  Don't create useless tree nodes.
	(record_var_is_nonzero): New function.
	(record_equivalences_from_stmt): Don't generate useless tree nodes.
	(lookup_avail_expr): Consult nonzero_vars and the true/false
	expression tables as well.
	(get_eq_expr_value): Record local true/false expressions in the
	local true/false varrays rather than the main local expression
	varray.
	(true_false_expr_hash, true_false_expr_eq): New functions.

	* Makefile.in (OBJS-sommon): Add tree-ssanames.o.
	(tree-ssanames.o): Add dependencies.
	* tree-dfa.c (remove_phi_node): Release SSA_NAME expression when
	we remove the PHI node.
	(remove_all_phi_nodes_for): Similarly.
	* tree-ssa.c (prepare_operand_for_rename): Similarly when we
	strip away an SSA_NAME expression from an operand.
	(init_tree_ssa): Call the SSA_NAME initializer.
	(delete_tree_ssa): Call the SSA_NAME finalizer.
	* tree-ssa-dom.c (tree_ssa_dominator_optimize_1): Clear the
	const_and_copies and vrp_data virtual arrays.
	* tree-ssanames.c: New file for management of SSA_NAME expressions.
	* tree.h: Prototypes for functions exported by tree-ssanames.c.
	* tree-flow.h, tree-ssa-ccp.c, tree-ssa-dce.c: Use highest_ssa_version
	rather than next_ssa_version.
	* tree-ssa-dom.c, tree-ssa-live.c, tree-ssa.c: Similarly.
	* tree.c (dump_tree_statistics): Call into tree-ssaname statistics
	dumper too.
	(make_ssa_name): Kill.  Now in tree-ssanames.c

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

	* tree.c (recompute_tree_invarant_for_addr_expr): Split out from ...
	(build1): ... here.
	* tree.h: Declare it.
	* gimplify.c (gimplify_addr_expr): Use it.
	* tree-ssa-ccp.c (maybe_fold_offset_to_array_ref): Split out
	from fold_indirect_refs_r.
	(maybe_fold_stmt_indirect): Likewise.
	(maybe_fold_offset_to_component_ref): New.
	(maybe_fold_stmt_plus): New.
	(fold_stmt_r): Rename from fold_indirect_refs_r.
	(fold_stmt): Strip more useless type conversions.

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

	* tree-cfg.c (dump_function_to_file): Mind when cfun is null.

2003-11-18  Diego Novillo  <dnovillo@redhat.com>

	Revert

	2003-11-18  Jan Hubicka  <jh@suse.cz>

		* tree-cfg.c (cfg_remove_useless_stmts_bb): Avoid crash.
		* tree-dfa.c (get_expr_operands): Fix handling of CALL_EXPR.

	2003-11-18  Jan Hubicka  <jh@suse.cz>

		* Makefile.in (sibcall.o): Kill.
		(tree-tailcall.o): Add except.h dependency
		* sibcall.c: Kill.
		(purge_reg_equiv_notes, purge_mem_unchanging_flag): Move to ...
		* calls.c (purge_reg_equiv_notes,
		purge_mem_unchanging_flag) ... here.
		(expand_call): Do not produce placeholders; do
		not deal with tail recursion; update
		equivalencies after sibcall production.
		* toplev.c (rest_of_handle_sibling_calls): Kill.
		(rest_of_compialtion): Do not use rest_of_handle_sibling_calls.
		* tree-dump.c (dump_files): Add tail2
		* tree-flow.h (tree_optimize_tail_calls): Update prototype.
		* tree-optimize.c (optimize_function_tree): Do
		tail optimization twice.
		* tree-tailcall.c: Inlucde except.h
		(suitable_for_tail_call_opt_p): New.
		(optimize_tail_call): Add opt_tailcalls argument;
		optimize tailcalls.
		(tree_optimize_tail_calls): Add opt_tailcalls/pass arguments.
		* tree.h (CALL_EXPR_TAILCALL): New.
		(tree_dump_index): Add tail2

2003-11-18  Jan Hubicka  <jh@suse.cz>

	* tree-cfg.c (cfg_remove_useless_stmts_bb): Avoid crash.
	* tree-dfa.c (get_expr_operands): Fix handling of CALL_EXPR.

2003-11-18  Diego Novillo  <dnovillo@redhat.com>

	* tree-optimize.c (optimize_function_tree): Disable tail
	call optimizations.

2003-11-18  Jan Hubicka  <jh@suse.cz>

	* Makefile.in (sibcall.o): Kill.
	(tree-tailcall.o): Add except.h dependency
	* sibcall.c: Kill.
	(purge_reg_equiv_notes, purge_mem_unchanging_flag): Move to ...
	* calls.c (purge_reg_equiv_notes, purge_mem_unchanging_flag) ... here.
	(expand_call): Do not produce placeholders; do not deal with tail
	recursion; update equivalencies after sibcall production.
	* toplev.c (rest_of_handle_sibling_calls): Kill.
	(rest_of_compialtion): Do not use rest_of_handle_sibling_calls.
	* tree-dump.c (dump_files): Add tail2
	* tree-flow.h (tree_optimize_tail_calls): Update prototype.
	* tree-optimize.c (optimize_function_tree): Do tail optimization twice.
	* tree-tailcall.c: Inlucde except.h
	(suitable_for_tail_call_opt_p): New.
	(optimize_tail_call): Add opt_tailcalls argument; optimize tailcalls.
	(tree_optimize_tail_calls): Add opt_tailcalls/pass arguments.
	* tree.h (CALL_EXPR_TAILCALL): New.
	(tree_dump_index): Add tail2

2003-11-18  Jeff Law  <law@redhat.com>

	* tree-ssa-dom.c (thread_across_edge): Lose block_avail_exprs argument.
	Callers updated.  Pass NULL for block_avail_exprs in call to
	lookup_avail_expr.  Record both the condition and the inverted
	condition when threading across an edge.

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

	* tree-ssa.c (tree_ssa_useless_type_conversion): Use TYPE_MAIN_VARIANT
	when compariing pointer types too.

2003-11-18  Jan Hubicka  <jh@suse.cz>

	* tree-dump.c (dump_files): Reorder tail calls.
	* tree-optimize.c (optimize_function_tree): Likewise
	* tree-tailcall.c (optimize_tail_call, eliminate_tail_call): Remove
	variable tmpvars; update SSA.
	(suitable_for_tail_opt_p): Do not give up because of static variables.
	(find_tail_calls):  Track return values in SSA graph.
	* tree.c (make-phi_node): Do not create new SSA name when operand
	already is.
	* tree.h (enum tree_dump_index): Reorder tail call.

2003-11-17  Diego Novillo  <dnovillo@redhat.com>

	* gimplify.c (gimplify_call_expr): Change gimple_test_f argument to
	return bool type.
	(mark_decls_volatile_r): New local function.
	(gimplify_expr): Make gimple_test_f return bool type.
	Call mark_decls_volatile_r when gimplifying VA_ARG_EXPR.
	* tree-dfa.c (struct walk_state): Remove field is_va_arg_expr.
	Update all callers.
	(opf_force_vop): Remove.  Update all users.
	(add_stmt_operand): Re-structure to add real operands only for
	GIMPLE register variables.
	(find_vars_r): Don't handle VA_ARG_EXPR nodes.
	(add_referenced_var): Also assign a UID to variables with hidden
	uses.
	Call is_gimple_call_clobbered to determine if a variable is call
	clobbered.
	(get_memory_tag_for): Mark memory tags volatile and static.
	* tree-flow.h (struct var_ann_d): Remove field is_in_va_arg_expr.
	Update all users.
	* tree-simple.c (is_gimple_*): Change return type to bool.  Update
	all users.
	(is_gimple_reg_type): Return true only for non aggregate types.
	(is_gimple_non_addressable_1): New local function.
	(is_gimple_reg): Call it.
	(is_gimple_non_addressable): New function.
	(is_gimple_call_clobbered): New function.
	* tree-simple.h (is_gimple_*): Change return type to bool.

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

	PR c++/11266
	* gimplify.c (gimple_add_tmp_var): Also make sure
	seen_in_bind_expr isn't set.
	(mostly_copy_tree_r): Don't copy a TARGET_EXPR.
	(gimplify_target_expr): Only expand a TARGET_EXPR the first time
	we see it.

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

	* tree-pretty-print.c (dump_generic_node): Use %u not %x for
	printing DECL_UID.

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

	* c-common.c (c_add_case_label): Use create_artificial_label.
	* tree-simple.h (create_artificial_label): Move decl ...
	* tree.h: ... here.

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

	PR c++/12770
	* gimple-low.c (lower_stmt_body): Take a tree, not a tree*.
	(lower_stmt): Handle EH nodes.
	(lower_bind_expr): Remove fixme.
	(block_may_fallthru): Move from tree-eh.c.  Handle COND_EXPR,
	BIND_EXPR, and TRY_FINALLY_EXPR.
	(lower_cond_expr): Use it.
	* tree-eh.c (collect_finally_tree): Ignore COND_EXPR and BIND_EXPR.
	(replace_goto_queue_cond_clause): New.
	(replace_goto_queue_1): Use it.  Split out statement_list handling.
	(replace_goto_queue_stmt_list): New.
	(-block_may_fallthru): Move to gimple-low.c.
	(lower_eh_constructs_1): Ignore BIND_EXPR.
	* tree-flow.h (block_may_fallthru): Declare.

	* tree-dump.c (dump_files): Exchange .eh and .lower passes.
	* tree-optimize.c (tree_rest_of_compilation): Likewise.
	* tree.h (enum tree_dump_index): Likewise.

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

	* gimplify.c (mostly_copy_tree_r): Don't walk into a BLOCK.

	* tree-inline.c (walk_tree): Don't walk into the BIND_EXPR_VARS
	of a BIND_EXPR.
	* c-common.c (c_walk_subtrees): Don't walk into the decl of a
	DECL_STMT.

	PR optimization/11269
	* dwarf2out.c (gen_subprogram_die): Generate a DIE for a named
	return value.
	(loc_descriptor_from_tree): Treat RESULT_DECL like VAR_DECL.
	(add_location_or_const_value_attribute): Likewise.
	(add_bound_info): Likewise.
	(gen_decl_die): Likewise.

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

	* c-pretty-print.c (debug_c_tree): Restore removed fn.
	* diagnostic.h: Declare it.

	* tree-pretty-print.c (dump_generic_node): Use DECL_UID when
	dumping anonymous decls.

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

	* tree-cfg.c (last_and_only_stmt): New.
	* tree-flow.h (last_and_only_stmt): Declare.
	* tree-ssa-dom.c (thread_across_edge): Use it.

	* tree-cfg.c (tree_block_forwards_to): Don't check for empty stmts.
	(tree_forwarder_block_p): Likewise.
	* tree-dfa.c (get_stmt_operands): Likewise.
	* tree-ssa-ccp.c (set_rhs): Likewise.
	* tree-ssa-dom.c (optimize_stmt): Likewise.
	* tree-ssa.c (rewrite_stmt): Likewise.

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

	* tree.h (LABEL_DECL_UID): Rename from LABEL_DECL_INDEX.
	* tree-flow.h (bsi_remove): Declare.
	* tree-flow-inline.h (bsi_remove): Move ...
	* tree-cfg.c (set_bb_for_stmt): Don't re-set LABEL_DECL_UID.
	Verify that a label isn't already in a block before adding it.
	(bsi_remove): Move from tree-flow-inline.h, clear bb.
	* tree-pretty-print.c (dump_generic_node): Use LABEL_DECL_UID if set.

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

	* function.c (clear_block_marks): Rename from reorder_blocks_0, export.
	* function.h (clear_block_marks): Declare.
	* gimple-low.c (lower_function_body): Use it.
	(lower_bind_expr): Ensure we don't link blocks into the tree twice.
	* gimplify.c (gimplify_body): Keep old bind_expr at top level if
	possible.

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

	* tree-ssa-pre.c (split_critical_edges): Reimplement.  Call
	tree_split_edge directly.

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

	* tree-eh.c (do_return_redirection): Assign directly to the
	RESULT_DECL of a function which returns in memory.

2003-11-14  Daniel Berlin  <dberlin@dberlin.org>

	* tree-ssa-pre.c (pre_stats): Add ephis_current member.
	(create_ephi_node): Use xmalloc, not ggc_alloc_tree.
	(clear_all_eref_arrays): Free the ephis here.
	(expr_phi_insertion): Don't append the ephis to the erefs array.
	(insert_occ_in_preorder_dt_order): Move building/freeing of dfn
	array so that it only occurs once per function..
	(rename_1): Ditto on the dfs_id array.
	(ephi_use_pool): New alloc pool.
	(add_ephi_use): Pool allocate these things, rather than
	ggc_alloc'ing them.
	(insert_euse_in_preorder_dt_order_1): Use ephi_at_block to put the
	ephi in the list.
	(pre_expression): Don't PRE when we only have 1 occurrence.
	(expr_lexically_eq): Make inline.
	(names_match_p): Move closer to first use.
	(tree_perform_ssapre): Alloc and free the ephi_use_pool.
	Make stat printing per-expression.
	Add checking that we freed all ephis.

2003-11-14  Andrew MacLeod  <amacleod@redhat.com>

	* common.opt (ftree-ter): Document new option.
	* flags.h (flag_tree_ter): Add new flag.
	* fold-const.c (invert_truthvalue): Don't ignore cast to BOOLEAN_TYPE.
	* opts.c (decode_options): Option -ftree-ter defaults to on.
	(common_handle_option): Add processing for flag_tree_ter.
	* toplev.c (flag_tree_ter): Initialize to 0.
	(lang_independent_options f_): Add -ftree-ter flag.
	* tree-ssa-live.c (init_var_map): Initialize ref_count to 0.
	(delete_var_map): Free ref count if allocated.
	(register_ssa_partition): Add "is_use" parameter for reference counting.
	(create_ssa_var_map): Add flag and code for calculating ref counts.
	* tree-ssa-live.h (struct _var_map): Add ref_count field.
	(SSA_VAR_MAP_REF_COUNT): Define flag.
	(version_ref_count): Function to retreive ref_count.
	* tree-ssa.c (replace_variable): If an expression vector is passed in,
	use replacement expression instead of mapped variable when available.
	(struct value_expr_d): New structure for value lists.
	(struct temp_expr_table_d): Structure used to build an expression
	replacement table.
	(new_temp_expr_table): New. Create a new TER (Temporary Expression
	Replacement) table.
	(free_temp_expr_table): New. Free a TER table.
	(new_value_expr): New. Allocate a value list element.
	(free_value_expr): New. Free a value list element.
	(find_value_in_list): New. Find a value in a list.
	(add_value_to_list): New. Add a value to a list if not already present.
	(remove_value_from_list): New. Remove a value from a list.
	(add_dependance): New. Add a dependency to an expression.
	(check_replaceable): New. Check if a stmt is a candidate for TER. Add
	to active list and create dependancies if so.
	(finish_expr): New. Remove an expression from TER consideration.
	(mark_replaceable): New. Finish a TER expression as a valid replacement.
	(kill_expr): New. Finish dependent TER expressions as not replaceable.
	(kill_virtual_exprs): New. Finish any TER expressions dependent on a
	virtual operand as not replaceable.
	(find_replaceable_in_bb): New. Process a basic block for TER expression.
	(find_replaceable_exprs): New. Entry point for TER expression finder.
	(dump_replaceable_exprs): New. output list of replaceable expressions.
	(rewrite_out_of_ssa): Build TER table if requested, and use it.

2003-11-14  Andreas Jaeger  <aj@suse.de>

	* c-semantics.c (find_reachable_label): Use C90 function
	declaration.

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

	PR middle-end/12526
	* tree-cfg.c (call_expr_flags): Move to calls.c.
	* tree-flow.h: Move prototype to tree.h.

	PR c++/13033
	* c-simplify.c (gimplify_c_loop): Wrap the increment in a
	CLEANUP_POINT_EXPR.

	* tree-dfa.c (get_stmt_operands) <ASM_EXPR>: A memory clobber
	clobbers all call-clobbered variables.   Clobber clobber.

	* gimplify.c (canonicalize_component_ref): Remove redundant call
	to recalculate_side_effects.

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

	PR c++/12751
	* tree-eh.c (struct leh_tf_state): Add outer.
	(lower_try_finally, lower_cleanup): Set it.
	(lower_try_finally_fallthru_label): New.
	(honor_protect_cleanup_actions): Use it.
	(lower_try_finally_copy, lower_try_finally_switch): Likewise.

	* tree-eh.c (collect_finally_tree): Complete manual tailrecurse
	transformation.

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

	* gimplify.c (voidify_wrapper_expr): Don't clobber TREE_TYPE of
	statements in a STATEMENT_LIST.  Be prepared for an empty list.

2003-11-14  Steven Bosscher  <stevenb@suse.de>

	* jump.c (never_reached_warning): Remove function.
	* rtl.h (never_reached_warning): Don't declare it.
	* cfgrtl.c (never_reached_warning): Don't call it.
	* cse.c (never_reached_warning): Ditto.

2003-11-13  Jeff Law  <law@redhat.com>

	* tree-cfg.c (bsi_replace): Restore accidentally removed code.

	* tree-cfg.c (cfg_remove_useless_stmts_bb): Also detect useless
	var->var copies created by the out-of-ssa translation.

2003-11-13  Steven Bosscher  <stevenb@suse.de>

	PR middle-end/11514
	* tree-inline.c (walk_tree): Handle PLACEHOLDER_EXPR.

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

	* tree-cfg.c (cfg_remove_useless_stmts_bb): Initialize stmt.

2003-11-13  Jan Hubicka  <jh@suse.cz>

	* calls.c (special_function_p): Do not check for ECF_MALLOC.
	(flags_from_decl_or_type):  Use special_function_p.
	(expand_call): Remove call to special_function_p.
	* tree-cfg.c (notice_special_calls, clear_special_calls): New functions.
	(remove_useless_stmts): Use clear_special_calls.
	(remove_useless_stmts_1): Use notice_special_calls.
	* tree-flow.h (notice_special_calls, clear_special_calls): New functions.
	* tree-ssa-dce.c (remove_dead_stmts): Use clear_special_calls and
	notice_special_calls..

	* gimplify.c (gimplify_expr): Check labels.

	* tree-cfg.c (tree_verify_flow_info): Check labels.

	* tree-cfg.c (make_exit_edges): Do not create edges for const
	functions.
	(update_call_expr_flags): Fix.

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

	(declare_inlined_vars): New local function.
	(initialize_inlined_parameters): Call it.
	(expand_call_inline): Call it.

2003-11-13  Steven Bosscher  <stevenb@suse.de>

	PR optimization/12640
	* tree-ssa-ccp.c (get_strlen): Don't follow the UD chain
	of a PHI argument if the DEF stmt for the argument is
	the PHI itself.

2003-11-12  Zdenek Dvorak  <rakdver@atrey.karlin.mff.cuni.cz>
	    Jeff Law  <law@redhat.com>

	* tree-cfg.c (cfg_remove_useless_stmts): New function.
	(cfg_remove_useless_stmts_bb): Likewise.
	* tree-flow.h (cfg_remove_useless_stmts): Prototype.
	* tree-ssa.c (rewrite_out_of_ssa): Use cfg_remove_useless_stmts
	instead of remove_useless_stmts.

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

	* Makefile.in (OBJS-common): Add tree-iterator.o.
	(expr.o): Depend on tree-iterator.h.
	(GTFILES): Add tree-iterator.c.
	* basic-block.h (struct basic_block_def): Replace head_tree_p
	and end_tree_p with stmt_list.
	(tree_bb_root): New.
	(create_bb): Don't declare.
	* c-common.c (c_warn_unused_result): Handle STATEMENT_LIST.
	* c-simplify.c (c_gimplify_stmt): Don't rationalize_compound_expr.
	* cfg.c (entry_exit_blocks): Adjust for member changes.
	(compact_blocks): Manage tree_bb_root.
	* expr.c (expand_expr_1): Handle STATEMENT_LIST.
	* gimple-low.c: Update for tree_stmt_iterator changes.
	(lower_cond_expr): Use expr_only.  Notice empty conditionals.
	* gimplify.c (append_to_statement_list_1): Create and
	manage statement_list nodes.
	(foreach_stmt): Remove.
	(wfl_locus): Remove.
	(annotate_all_with_locus_1): Merge into...
	(annotate_all_with_locus): ... here.  Iterate over the
	statement list directly.
	(voidify_wrapper_expr): Handle STATEMENT_LIST.
	(gimplify_return_expr): Likewise.
	(gimplify_loop_expr): Likewise.
	(shortcut_cond_r, shortcut_cond_expr): Likewise.
	(gimplify_cleanup_point_expr): Likewise.
	(gimple_build_eh_filter): Create statement list bodies.
	(gimplify_bind_expr): Likewise.
	(gimplify_switch_expr): Likewise.
	(gimplify_cond_expr): Likewise.
	(gimplify_compound_expr): Handle void expressions as well.
	(gimplify_statement_list): New.
	(gimple_push_cleanup): Gimplify the WITH_CLEANUP_EXPR operand.
	(gimplify_stmt): Ensure non-null result.
	(gimplify_to_stmt_list): New.
	(gimplify_expr): Use gimplify_compound_expr, gimplify_statement_list,
	gimplify_to_stmt_list as appropriate.
	(gimplify_body): Fix creation of outer BIND_EXPR.
	* tree-cfg.c (tree_bb_root): New.
	(build_tree_cfg): Initialize it.  Update for make_blocks changes.
	(factor_computed_gotos): Use create_bb directly.
	(make_blocks): Rewrite to use statement lists.
	(append_stmt_to_bb, prepend_stmt_to_bb): Remove.
	(create_bb): Make static.  Add stmt_list argument.  Don't allow
	null after argument.  Set tree_bb_root.
	(make_edges): ENTRY block successor is FALLTHRU.
	(remove_useless_stmts_warn_notreached): Handle STATEMENT_LIST.
	(struct rus_data): Add last_goto.
	(remove_useless_stmts_cond): Clear it.  Zap empty conditionals.
	Use expr_only for simple statment elimination.
	(remove_useless_stmts_tf): Clear last_goto.  Use TREE_SIDE_EFFECTS
	instead of IS_EMPTY_STMT.  Use append_to_statement_list instead of
	munging to COMPOUND_EXPR.
	(remove_useless_stmts_tc): Clear last_goto.  Use TREE_SIDE_EFFECTS.
	(remove_useless_stmts_goto): Set last_goto.
	(remove_useless_stmts_label): New.  Kill goto-next-label.
	(remove_useless_stmts_1): Reorg to handle STATEMENT_LIST.
	(remove_bb): Simplify block removal.
	(remove_bsi_from_block): Kill.
	(tree_block_forwards_to): Tidy bsi loops.  Do not create
	block label here.
	(tree_cfg2dot): Update for bb->stmt_list.
	(delete_tree_cfg): Clear tree_bb_root.
	(set_bb_for_stmt): Handle STATEMENT_LISTs.
	(bsi_insert_before, bsi_insert_after): Re-implement on TSIs.
	(bsi_move_after, bsi_move_before, bsi_move_to_bb_end): Likewise.
	(bsi_replace): Likewise.
	(tree_find_edge_insert_loc): New, split from ...
	(bsi_insert_on_edge_immediate): ... here.
	(bsi_commit_edge_inserts): Use it.  Add all stmts at once.
	(bsi_insert_on_edge): Use statement lists.
	(tree_split_edge): Position new block correctly.  Deal with
	fallthrough to EXIT.
	(tree_verify_flow_info): Do not check block order vs statement chain.
	(tree_make_forwarder_block): Update create_bb call, fix edge flags.
	(thread_jumps): Call tree_redirect_edge_and_branch directly.
	(tree_block_label): Don't return a NONLOCAL_LABEL.
	(tree_redirect_edge_and_branch_1): Rename from s/_1//.  Take an
	argument to use ssa_redirect_edge or redirect_edge_succ.  Use
	tree_split_edge instead of bsi_insert_on_edge_immediate.
	(tree_redirect_edge_and_branch): New.
	(remove_stmt, first_exec_stmt, bsi_init, bsi_next_in_bb): Kill.
	(bsi_start, bsi_last, bsi_prev, bsi_from_tsi): Kill.
	(bsi_update_from_tsi, bsi_link_after): Kill.
	* tree-eh.c (collect_finally_tree): Handle STATEMENT_LIST.
	(replace_goto_queue_1): Likewise.
	(replace_goto_queue): Don't use walk_tree.
	(do_return_redirection): Create statement lists.
	(do_goto_redirection): Likewise.
	(block_may_fallthru_last): Fold into...
	(block_may_fallthru): ... here.
	(frob_into_branch_around): Use append_to_statement_list.
	(honor_protect_cleanup_actions): Likewise.
	(lower_try_finally_nofallthru): Likewise.
	(lower_try_finally_onedest): Likewise.
	(lower_try_finally_copy): Likewise.
	(lower_try_finally_switch): Likewise.
	(lower_try_finally): Likewise.
	(lower_catch): Likewise.
	(lower_eh_filter): Likewise.
	(lower_eh_constructs_1): Handle STATEMENT_LIST.
	* tree-flow-inline.h (BSI_NUM_ELEMENTS, bsi_list_p): Remove.
	(new_bsi_list, empty_bsi_stack, FOR_EACH_BSI_IN_REVERSE): Remove.
	(FOR_EACH_STMT_IN_REVERSE): Remove.
	(bsi_start, bsi_last, bsi_end_p): Re-implement based on TSIs.
	(bsi_next, bsi_prev, bsi_stmt, bsi_stmt_ptr, bsi_remove): Likewise.
	* tree-flow.h (block_stmt_iterator): Likewise.
	* tree-inline.c (copy_statement_list): New.
	(copy_body_r): Use it, and append_to_statement_list.
	(initialize_inlined_parameters): Use append_to_statement_list.
	(expand_call_inline): Likewise.
	(gimple_expand_calls_inline): New.
	(expand_calls_inline): Use it.
	(walk_tree, unsave_r): Handle STATEMENT_LIST.
	(add_stmt_to_compound): Remove.
	* tree-iterator.c: New file.
	* tree-iterator.h: Re-implement based on STATEMENT_LIST.
	* tree-mudflap.c (mf_decl_cache_locals): Don't
	rationalize_compound_expr.
	* tree-optimize.c (optimize_function_tree): Make static.
	Rechain statements from blocks before deleting the cfg.
	* tree-pretty-print.c (dump_generic_node): Handle STATEMENT_LIST,
	update for change in tree_stmt_iterator wrt COMPOUND_EXPR.
	(dump_generic_node): Dump lowered COND_EXPR on a single line.
	* tree-simple.c (is_gimple_stmt): Handle STATEMENT_LIST.
	* tree-simple.h (foreach_stmt_fn, foreach_stmt): Remove.
	(gimplify_to_stmt_list): Declare.
	(alloc_stmt_list, free_stmt_list): Declare.
	* tree-ssa-dce.c (should_remove_dead_stmt): Rename from
	remove_dead_stmt; return bool if statement should be removed.
	(remove_dead_stmts): Update to match.
	* tree-ssa-live.c (build_tree_conflict_graph): Don't use
	FOR_EACH_STMT_IN_REVERSE.
	* tree-ssa-pre.c (reaching_def): Tidy BSI usage.
	(insert_one_operand, collect_expressions): Likewise.
	* tree.c (tree_size): Handle STATEMENT_LIST.
	(copy_node): Abort on STATEMENT_LIST.
	(expr_first, expr_last): Move to tree-iterator.c.
	(expr_length): Remove.
	(tree_node_structure): Handle STATEMENT_LIST.
	(tsi_link_before, tsi_link_after, tsi_delink): Move to tree-iterator.c.
	(tsi_link_chain_before, tsi_link_chain_after): Merge into non-chain.
	(tsi_new_stmt_list, tsi_stmt_list_head, body_is_empty): Kill.
	* tree.def (STATEMENT_LIST): New.
	* tree.h (STATEMENT_LIST_HEAD, STATEMENT_LIST_TAIL): New.
	(struct tree_statement_list_node): New.
	(struct tree_statement_list): New.
	(enum tree_node_structure_enum): Add TS_STATEMENT_LIST.
	(union tree_node): Add stmt_list.
	(expr_length): Remove.
	(expr_only): New.
	(add_to_compound_expr, body_is_empty): Remove.
	(optimize_function_tree): Remove.

2003-11-12  Zdenek Dvorak  <rakdver@atrey.karlin.mff.cuni.cz>

	* tree-flow.h (remove_useless_vars): Declare.
	(expand_var_p): Declaration removed.
	* tree-ssa.c (rewrite_out_of_ssa): Call remove_useless_vars.
	* tree-cfg.c (dump_function_to_file): Update dumping of variables.
	* gimple-low.c (expand_var_p): Made static.
	(remove_useless_vars): New.
	(expand_used_vars): Expand all variables in the
	cfun->unexpanded_var_list.

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

	* c-common.c (c_gimplify_stmt): Fix botched removal of
	rationalize_compound_expr calls.

	* c-semantics.c (build_stmt): Set TREE_SIDE_EFFECTS.
	* c-simplify.c (c_gimplify_stmt): Return a gimplify_status;
	mind the status from subroutines to avoid re-gimplification.
	(c_build_bind_expr): Do not call gimplify_stmt.
	(gimplify_c_loop): Don't create a loop_expr; fully gimplify.
	(gimplify_block, gimplify_cleanup, gimplify_expr_stmt,
	gimplify_for_stmt, gimplify_while_stmt, gimplify_do_stmt,
	gimplify_if_stmt, gimplify_switch_stmt, gimplify_return_stmt,
	gimplify_decl_stmt, gimplify_compound_literal_expr,
	gimplify_stmt_expr): Return a gimplify_status.  In most cases,
	don't do local gimplification of sub-structures.
	(gimplify_decl_stmt): Use append_to_compound_expr when we care
	about the result value.
	(gimplify_stmt_expr): Use append_to_statement_list_force and
	re-gimplify so that voidify_wrapper_expr can work.
	(finish_bc_block): Don't append to a non-list.
	(c_gimplify_expr): Pass back the gimplify_status of subroutines.
	* c-common.h (c_gimplify_stmt): Update decl.
	* gimplify.c (append_to_statement_list_1): Make sure list_p is
	never null after call.
	(append_to_compound_expr): New.
	* tree-simple.h (append_to_compound_expr): Declare.

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

	* gimplify.c (gimplify_addr_expr): Clear, not copy, TREE_SIDE_EFFECTS.

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

	PR c/13014
	* c-simplify.c (gimplify_if_stmt): Remove short circuit.
	* tree-cfg.c (struct rus_data): Add has_label.
	(remove_useless_stmts_warn_notreached): New.
	(remove_useless_stmts_cond): Warn for deleted conditionals.
	(remove_useless_stmts_tc): Warn for deleted catches.
	(remove_useless_stmts_1): Set has_label.

2003-11-11  Jan Hubicka  <jh@suse.cz>

	* gimplify.c (gimplify_call_expr):  Unset side effects for
	pure functions too.
	* tree-cfg.c (update-call_expr_flags): New function.
	(remove_useless_stmts_and_vars_1): Use it.
	(is_ctrl_altering_stmt):  Pure/const calls never alter the CFG.
	* tree-ssa-dce.c (stmt_useful_p): Check side effects flag
	on call exprs.

2003-11-11  Jan Hubicka  <jh@suse.cz>

	* tree-cfg.c (has_label_p): New function.
	(tree_verify_flow_info): New checks.
	* tree-optimize.c (optimize_function_tree): Call verify_flow_info
	before de-SSA.

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

	* tree-cfg.c (struct rus_data): Rename from rusv_data.
	Remove remove_unused_vars.
	(remove_useless_stmts*): Rename from remove_useless_stmts_and_vars*.
	(remove_useless_stmts_bind): Do not remove dead variables.
	(remove_useless_stmts): Kill remove_unused_vars argument.
	* tree-flow.h (remove_useless_stmts): Update.
	* tree-optimize.c (tree_rest_of_compilation): Update call.
	* tree-ssa.c (rewrite_out_of_ssa): Likewise.

2003-11-11  Zdenek Dvorak  <rakdver@atrey.karlin.mff.cuni.cz>
	    Diego Novillo  <dnovillo@redhat.com>

	* basic-block.h (brief_dump_cfg): Declare.
	* cfg.c (dump_cfg_bb_info, brief_dump_cfg): New.
	* diagnostic.h (dump_generic_node): Declaration changed.
	(print_generic_stmt_indented): Declare.
	* gimple-low.c (expand_var_p): New.
	(expand_used_vars): Use it.
	* tree-cfg.c (struct cfg_stats_d): Remove num_failed_bind_expr_merges
	field.
	(remove_bb): Only dump whole block with TDF_DETAILS.
	(tree_dump_bb): Use dump_generic_bb.
	(dump_tree_cfg): Use brief_dump_cfg and dump_function_to_file.
	(dump_cfg_function_to_file): Merged into dump_function_to_file,
	removed.
	(dump_cfg_stats): Do not dump cfg_stats.num_failed_bind_expr_merges.
	(dump_function_to_file): Moved from tree-dump.c, merged with
	dump_cfg_function_to_file.
	* tree-dump.c (dump_function_to_file): Removed.
	* tree-flow.h (dump_cfg_function_to_file): Declaration removed.
	(dump_generic_bb, expand_var_p): Declare.
	* tree-must-alias.c (tree_compute_must_alias): Replace
	dump_cfg_function_to_file by dump_function_to_file.
	* tree-ssa-ccp.c (tree_ssa_ccp): Ditto.
	* tree-ssa-copyprop.c (tree_ssa_copyprop): Ditto.
	* tree-ssa-dce.c (tree_ssa_dce): Ditto.
	* tree-ssa-dom.c (tree_ssa_dominator_optimize_1): Ditto.
	* tree-ssa-pre.c (tree_perform_ssapre): Ditto.
	* tree-ssa.c (rewrite_into_ssa, rewrite_out_of_ssa): Ditto.
	* tree-tailcall.c (tree_optimize_tail_calls): Ditto.
	* tree-pretty-print.c (print_declaration, print_generic_decl): Don't
	use flags argument, change spacing.
	(dump_block_info): Removed.
	(dump_generic_bb_buff, dump_generic_bb, print_generic_stmt_indented,
	dump_bb_header, dump_bb_end, dump_phi_nodes): New functions.
	(dump_vops): Change spacing, don't dump phi nodes.
	(do_niy, print_generic_stmt, print_generic_expr, print_declaration,
	print_struct_decl, print_call_name): Add argument to
	the dump_generic_node calls.
	(last_bb): Removed.
	(dump_generic_node): Print semicolons at end of statements correctly.
	Don't print bb related stuff.
	(maybe_init_pretty_print): Don't initialize last_bb.
	* tree-ssa.c (rewrite_out_of_ssa): Do not allow virtual operands to
	be shown in the .optimized dump.

2003-11-11  Daniel Berlin  <dberlin@dberlin.org>

	PR optimization/12936
	* tree-ssa-pre.c (expr_phi_insertion): Remove unused code that was
	causing ICE's for VA_ARG_EXPR.

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

	* gimple-low.c (lower_function_body): Lower bind_expr in place.
	(lower_stmt): Only incr for stmts we're skipping.
	(lower_cond_expr): Detect empty if.

2003-11-10  Steven Bosscher  <stevenb@suse.de>

	* toplev.c (rest_of_decl_compilation): Use the location of the
	declaration for error messages.

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

	* gimplify.c (add_stmt_to_compound, add_tree): Remove.
	(append_to_statement_list_1, append_to_statement_list): New.
	(append_to_statement_list_force): New.
	(gimplify_loop_expr): Take pre_p.
	(gimplify_expr): Provide it.
	* tree-simple.h: Update.

	* c-simplify.c: Replace add_tree with append_to_statement_list.
	* gimplify.c, tree-mudflap.c: Likewise.

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

	* c-common.c (c_warn_unused_result): Restructure to use iterator
	on COMPOUND_EXPR only.

2003-11-09  Zdenek Dvorak  <rakdver@atrey.karlin.mff.cuni.cz>

	* tree-cfg.c (tree_verify_flow_info): Fix checking of order of basic
	blocks over code.

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

	* basic-block.h (struct edge_def): Turn insns into a union.
	* cfgrtl.c (insert_insn_on_edge): Update to match.
	(commit_one_edge_insertion, commit_edge_insertions): Likewise.
	(commit_edge_insertions_watch_calls): Likewise.
	* gcse.c (reg_killed_on_edge, bypass_block): Likewise.
	* profile.c (instrument_edges): Likewise.
	* rtlanal.c (hoist_insn_to_edge): Likewise.
	* tree-cfg.c (PENDING_STMT): Likewise.
	(SET_PENDING_STMT): Remove.
	(bsi_commit_edge_inserts): Update to match.

2003-11-08  Jan Hubicka  <jh@suse.cz>

	* fold.c (nondestructive_fold_binary_to_constant): Fix typo.
	* fold-const.c (fold_relational_const): Check for side effects.

2003-11-07  Zdenek Dvorak  <rakdver@atrey.karlin.mff.cuni.cz>

	* basic-block.h (create_bb): Declaration changed.
	* tree-cfg.c (create_bb): Enable creating a block on specified place.
	(make_blocks, tree_split_edge, tree_make_forwarder_block): Use it.
	(tree_verify_flow_info): Check bbs are in the correct order.

	* tree-cfg.c (find_unreachable_blocks): Remove now incorrect comments.

	* tree-ssa.c (rewrite_out_of_ssa): Don't remove annotations from
	statements before the final dump.

2003-11-07  Zdenek Dvorak  <rakdver@atrey.karlin.mff.cuni.cz>

	* tree-tailcall.c (struct tailcall): New.
	(bb_optimize_tail_calls, find_tail_call_p): Removed.
	(eliminate_tail_call): Get the tailcall from the struct tailcall.
	(optimize_tail_call, find_tail_calls): New.
	(tree_optimize_tail_calls): Use them.

2003-11-07  Jan Hubicka  <jh@suse.cz>

	* gimple-low.c (simple_goto_p): Move to...
	* tree-cfg.c: (simple_goto_p): ... here;
	(nonlocal_goto_p): New.
	(is_computed_goto): Rename to ...
	(computed_goto_p): ... this; make global.
	(factor_computed_gotos, make_blocks):  Update calls.
	(make_ctrl_stmt_edges): Add edge for nonlocal labels; use new functions.
	* tree-flow.h (is_coputed_goto): Kill.
	(nonlocal_goto_p, simple_goto_p, computed_goto_p): Declare.
	* tree-ssa-ccp (visit_stmt): Update.

2003-11-07  Jan Hubicka  <jh@suse.cz>

	* fold-const.c (tree_expr_nonzero_p): Fix typo.

	* fold-const.c (tree_expr_nonzero_p): New function.
	(fold_relational_const): Use it.
	(nondestructive_fold_binary_to_constant): Allow casts in address
	expressions.

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

	* tree-cfg.c (tree_block_label):  Cleanup.

2003-11-06  Daniel Berlin  <dberlin@dberlin.org>

	* tree-ssa-pre.c (fast_a_dominates_b): New function.
	(build_dfs_id_array_1): Ditto.
	(build_dfs_id_array): Ditto.
	(load_modified_phi_result): Use fast_a_dominates_b.
	(rename_1): Ditto.
	Also use build_dfs_id_array, and remove some duplicate ephi_at_block
	calls.
	(insert_occ_in_preorder_dt_order): Remove some duplicate ephi_at_block
	calls.
	(pre_expression): Ditto.
	Also free dfs_id arrays here.
	(collect_expressions): Remove duplicate bsi_stmt calls.

2003-11-06  Daniel Berlin  <dberlin@dberlin.org>

	* tree-ssa-pre.c (count_stmts_in_bb): Removed.
	(set_var_phis): Only call bb_for_stmt once.
	(insert_one_operand): Remove endtree, endtreep, a lot of special handling
	no longer needed.  Remove insert_done.
	(collect_expressions): Enable INDIRECT_REF and SSA_NAME handling.

2003-11-06  Steven Bosscher  <stevenb@suse.de>

	* tree-cfg.c (STRIP_CONTAINERS): Remove.

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

	* tree-cfg.c (cleanup_cond_expr_graph):  Clean edge flags.

2003-11-06  Zdenek Dvorak  <rakdver@atrey.karlin.mff.cuni.cz>

	* tree-dump.c (dump_options): Remove TDF_LINENO from all setting.

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

	* builtins.c (expand_builtin_strstr, expand_builtin_strchr,
	expand_builtin_strrchr, expand_builtin_strpbrk,
	simplify_builtin_strstr, simplify_builtin_strrchr,
	simplify_builtin_strpbrk): Add missing casts.

2003-11-05  Zdenek Dvorak  <rakdver@atrey.karlin.mff.cuni.cz>

	* diagnostic.h (print_generic_decl): Declare.
	* tree-cfg.c (dump_cfg_function_to_file): Dump variables in
	unexpanded_var_list.
	* tree-pretty-print.c (print_generic_decl): New function.

2003-11-05  Zdenek Dvorak  <rakdver@atrey.karlin.mff.cuni.cz>

	* Makefile.in (gimplify.o): Add function.h dependency.
	* c-call-graph.c (construct_call_graph): Modify build_tree_cfg call.
	* gimple-low.c (record_vars): Export.
	(lower_function_body): Remove the topmost BIND_EXPR.
	* gimplify.c: Include function.h.
	(gimple_add_tmp_var): Record temporaries in the
	cfun->unexpanded_vars_list if available.
	* tree-cfg.c (build_tree_cfg): Work without the topmost BIND_EXPR.
	(dump_cfg_function_to_file): New.
	(dump_tree_cfg): Use dump_cfg_function_to_file.
	* tree-dump.c (dump_function_to_file): Work without the topmost
	BIND_EXPR.
	* tree-flow.h (build_tree_cfg): Declaration changed.
	(dump_cfg_function_to_file, record_vars): Declare.
	* tree-optimize.c (optimize_function_tree, tree_rest_of_compilation):
	Work without the topmost BIND_EXPR.
	* tree-must-alias.c (tree_compute_must_alias): Use
	dump_cfg_function_to_file.
	* tree-ssa-ccp.c (tree_ssa_ccp): Ditto.
	* tree-ssa-copyprop.c (tree_ssa_copyprop): Ditto.
	* tree-ssa-dce.c (tree_ssa_dce): Ditto.
	* tree-ssa-dom.c (tree_ssa_dominator_optimize_1): Ditto.
	* tree-ssa-pre.c (tree_perform_ssapre): Ditto.
	* tree-ssa.c (rewrite_into_ssa, rewrite_out_of_ssa): Ditto.
	* tree-tailcall.c (tree_optimize_tail_calls): Ditto.
	* tree.h (optimize_function_tree): Declaration changed.

2003-11-03  Daniel Berlin  <dberlin@dberlin.org>

	* tree-ssa-pre.c (handle_bb_creation): Removed.
	(redo_dominators): Removed.
	(insert_one_operand): Remove code to handle bb creation, since all
	critical edges are now pre-split.
	(finalize_2): Remove redo_dominators related code.
	(pre_expression): Return 1 if we exited early because nothing happened.
	(split_critical_edges): Do fake variable assignments instead, because
	it works. return true if we actually split an edge.
	(tree_perform_ssapre): Remove redo_dominators code.

2003-11-03  Zdenek Dvorak  <rakdver@atrey.karlin.mff.cuni.cz>

	* function.h (struct function): New field unexpanded_var_list.
	* gimple-low.c (unexpanded_var_list): Removed.
	(record_vars, expand_used_vars): Use cfun->unexpanded_var_list.
	* tree-flow.h (unexpanded_var_list): Declaration removed.

	* gimplify.c (should_carry_locus_p): New.
	(annotate_all_with_locus_1): Use it.  Do not annotate empty
	statements.

2003-11-03  Jan Hubicka  <jh@suse.cz>

	* tree-cfg.c (tree_try_redirect_by_replacing_jump): Do not use
	succesor_block.

2003-11-03  Zdenek Dvorak  <rakdver@atrey.karlin.mff.cuni.cz>

	* tree-pretty-print.c (dump_block_info): Add flags parameter.
	Only show line number when asked to.
	(dump_generic_node): Pass flags to dump_block_info.

2003-11-03  Jan Hubicka  <jh@suse.cz>

	* cfghooks.h (redirect_edge_and_branch hook): Make it return edge.
	* cfgrtl.c (cfg_layout_redirect_edge_and_branch,
	rtl_redirect_edge_and_branch, try_redirect_by_replacing_jump):
	Update to new interface.
	* tree-cfg.c (tree_cfg_hooks): Move to end of file; set
	redirect_edge_and_branch and redirect_edge_and_branch_force.
	(thread_jumps): Use redirect_edge_and_branch.
	(tree_block_label): new; break out of thread_edge.
	(tree_try_redirect_by_replacing_jump): New.
	(thread_edge): Rename to tree_redirect_edge_and_branch; deal sanely
	with unusual edges; preserve profile.
	(tree_redirect_edge_and_branch_force): New.
	* tree-flow.h (ssa_redirect_edge): Declare.
	* tree-ssa.dom.c (tree_ssa_dominator_optimize): Use redirect_edge_and_branch.
	* tree-ssa.c (ssa_redirect_edge): New.

2003-11-03  Jeff Law  <law@redhat.com>

	* domwalk.h (struct dom_walk_data): New field "global_data".
	* tree-ssa-dom.c (tree_ssa_dominator_optimize_1): Initialize new
	"global_data" field.
	* tree-flow.h (enum need_phi_state): New enumeration.
	(var_ann_d): Add bitfield for need_phi_state.
	* tree-ssa.c (mark_def_sites_global_data): New structure to hold
	global data for mark_def_sites dominator walk.
	(mark_def_sites): Revamp to be called via the dominator walker.
	(set_def_block): Update need_phi_state for the variable as needed.
	(set_livein_block): Similarly.
	(rewrite_into_ssa): Use dominator walker to call mark_def_sites.
	Delay freeing dominance info.  Kill "globals" bitmap.
	(insert_phi_nodes): No longer need "globals" bitmap.  Use
	need_phi_state in variable's annotation to determine if a PHI
	may be needed.

	* tree-ssa-dom.c (dom_opt_finalize_block): Try to thread across the
	edges leaving COND_EXPR nodes which are leafs in the dominator
	tree.
	(record_equivalences_from_incoming_edge): Do not set EQ_EXPR_VALUE
	unless the block's single predecessor contains parent_block_last_stmt.

2003-11-03  Zdenek Dvorak  <rakdver@atrey.karlin.mff.cuni.cz>

	* tree-dump.c (dump_options): Add TDF_LINENO.
	* tree-pretty-print.c (dump_generic_node): Print line number for
	statements if asked to.
	* tree.h (TDF_LINENO): New.
	* doc/invoke.texi (lineno): Document.

2003-11-03  Zdenek Dvorak  <rakdver@atrey.karlin.mff.cuni.cz>

	* expr.c (expand_vars, expand_var): Split of ...
	(expand_expr_1): ... here.
	* expr.h (expand_var): Declare.
	* gimple-low.c (lower_function_body, lower_stmt, lower_bind_expr):
	Eliminate BIND_EXPRs.
	(expand_used_vars): New.
	* tree-alias-common.c (create_alias_vars): Walk variables in blocks.
	* tree-cfg.c (make_bind_expr_blocks): Removed.
	(make_blocks, build_tree_cfg, factor_computed_gotos): Don't handle
	BIND_EXPRs.
	(assign_vars_to_scope, successor_block, NEXT_BLOCK_LINK): Removed.
	(make_edges, make_exit_edges): Don't use successor_block.
	(remove_useless_stmts_and_vars_goto): Don't expect NEXT_BLOCK_LINK
	to be set.
	(bsi_init, bsi_next_in_bb, bsi_from_tsi): Don't handle BIND_EXPRs.
	(replace_stmt): Don't create BIND_EXPRs.
	* tree-flow.h (struct var_ann_d): Removed field scope.
	(struct stmt_ann_d): Removed fields scope and scope_level.
	(propagate_copy): Declaration changed.
	(fixup_var_scope): Removed.
	* tree-must-alias.c (tree_compute_must_alias): Consider DECL_NONLOCAL
	vars call clobbered.
	* tree-optimize.c (tree_rest_of_compilation): Call expand_used_vars.
	* tree-ssa-copyprop.c (move_var_to_scope, fixup_var_scope): Removed.
	(copyprop_stmt): Call to propagate_copy changed.
	(propagate_copy): Don't update scope.
	* tree-ssa-dom.c (cprop_into_stmt): Call to propagate_copy changed.
	(eliminate_redundant_computations): Don't call fixup_var_scope.
	* tree-ssa.c (insert_copy_on_edge): Don't update scope.

2003-11-02  Zdenek Dvorak  <rakdver@atrey.karlin.mff.cuni.cz>

	* tree-inline.c (walk_tree): Tail recursion optimized for
	COMPOUND_EXPRs.
	* tree-eh.c (collect_finally_tree): Ditto.

2003-11-02  Zdenek Dvorak  <rakdver@atrey.karlin.mff.cuni.cz>

	* tree-optimize.c (optimize_function_tree): Removed duplicate call of
	lower_function_body.  Moved call of reset_block_changes ...
	(tree_rest_of_compilation) ... here.  Reset the scope to top before
	expanding function end.

2003-11-01  Zdenek Dvorak  <rakdver@atrey.karlin.mff.cuni.cz>

	* basic-block.h (BB_CONTROL_STRUCTURE): Removed.
	* tree-cfg.c (struct cfg_stats_d): Field num_merged_cases removed.
	(make_blocks, make_bind_expr_blocks, append_stmt_to_bb, bsi_link_after,
	build_tree_cfg, factor_computed_gotos, prepend_stmt_to_bb,
	remove_stmt, replace_stmt): Don't set parent.
	(set_parent_stmt, add_stmt_to_bb, find_contained_blocks,
	blocks_unreachable_p, remove_blocks, remove_unreachable_block,
	move_outgoing_edges, merge_tree_blocks, remap_stmts): Removed.
	(REMOVE_ALL_STMTS, REMOVE_NO_STMTS, REMOVE_NON_CONTROL_STRUCTS,
	REMOVE_CONTROL_STRUCTS): Removed.
	(remove_bb): Code to handle control structures removed.
	(tree_block_forwards_to): Don't stop due to CASE_LABEL_EXPRs.
	(tree_dump_bb): Don't print parent.  Print only BIND_EXPRs in slim
	form.
	(dump_tree_cfg): Don't count merged case labels.
	(is_ctrl_structure): Removed.
	(stmt_starts_bb_p): Don't handle CASE_LABEL_EXPRs.
	(tree_verify_flow_info): Don't check BB_CONTROL_STRUCTURE.
	* tree-flow-inline.h (parent_block, parent_stmt): Removed.
	* tree-flow.h (struct stmt_ann_d): Remove parent_stmt field.
	(parent_stmt, parent_block, is_ctrl_structure): Declarations removed.
	* tree-pretty-print.c (dump_generic_node): Don't handle lowered
	COND_EXPRs specially.
	* tree-ssa-ccp.c (visit_stmt): Don't check is_ctrl_structure.

2003-10-31  Jeff Law  <law@redhat.com>

	* tree-ssa-dom.c (record_equivalences_from_stmt): Restore lost code
	to create equivalences from BIT_IOR_EXPR.

	* tree-ssa-dom.c (thread_jumps_walk_stmts): Go ahead and optimize
	a COND_EXPR with a compile-time constant condition.

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

	* tree-optimize.c (optimize_function_tree): Fix comment
	describing SSA pass after DOM2.

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

	Fix PR optimization/12825
	* tree-optimize.c (optimize_function_tree): Run SSA renamer after
	second DOM pass.

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

	* c-common.c (match_case_to_enum_1, match_case_to_enum): New.
	(c_do_switch_warnings): New.
	* c-common.h (c_do_switch_warnings): Declare.
	* c-typeck.c (c_finish_case): Call it.
	* stmt.c (all_cases_count, BITARRAY_TEST, BITARRAY_SET,
	mark_seen_cases, check_for_full_enumeration_handling): Remove.
	(expand_end_case_type): Don't do warn_switch handling.
	* expr.h, tree.h: Remove dead decls.

	* c-simplify.c (gimplify_switch_stmt): Force switch body non-null.

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

	* tree-cfg.c (thread_jumps): Allow SWITCH_EXPR.
	(thread_edge): Handle it.  Tidy surrounding code.

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

	* domwalk.c (walk_dominator_tree): Pass any final is_ctrl_stmt
	down the recursive walk.

2003-10-30  Jeff Law  <law@redhat.com>

	* tree-ssa-dom.c (thread_across_edge): Renamed from
	thread_through_successor.  Revamp to thread the destination of an edge
	rather than the successors of a block.
	(dom_opt_finalize_block): Corresponding changes.  Do not bother calling
	thread_across_edge unless we are at a leaf in the dominator tree.

	* tree-cfg.c (thread_jumps): Now returns a bool.  Move some tests into
	tree_forwarder_block_p.  Improve comments.
	(cleanup_control_flow): Now returns a bool indicating if anything was
	changed.
	(thread_unconditional_jumps): Kill.
	(cleanup_tree_cfg): Repeat cascading cleanups until nothing changes.
	(tree_forwarder_block_p): Check forwardable bit in the block's
	annotation to avoid useless work.  Mark blocks as not forwardable as
	appropriate.  Verify destination is not the exit block here.  Do not
	consider successors of the entry block as forwarders.  Ignore empty
	statements when walking through the block's statements.  Verify target
	block is not the start of a case label and that we can safely insert
	a label at the target block.

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

	* c-common.c (c_warn_unused_result): Remove lowered containers.
	* c-semantics.c (genrtl_case_label): Update add_case_node call.
	* c-simplify.c (gimplify_switch_stmt): Build SWITCH_EXPR and
	gimplify it simultaneously with the body.
	* expr.c (expand_expr_1): Handle SWITCH_BODY clear and
	SWITCH_LABELS set.  Update add_case_node calls.
	* gimple-low.c (lower_stmt): Don't do anything for SWITCH_EXPR.
	(lower_switch_expr, lower_case_label_expr): Remove.
	* gimplify.c (gimplify_switch_expr): Zap SWITCH_BODY after
	gimplification.  Force default entry for SWITCH_LABELS.
	(gimplify_case_label_expr): Rename from gimple_add_case_label.
	Assert switch in scope; lower to LABEL_EXPR.
	* stmt.c (pushcase, pushcase_range) Update add_case_node calls.
	(add_case_node): Add dont_expand_label argument.
	(same_case_target_p): Don't search rtl.
	* tree-cfg.c (enum find_location_action): Remove.
	(make_switch_expr_blocks): Remove.
	(make_blocks): Update.
	(make_case_label_edges): Remove.
	(make_edges): Update.
	(find_contained_blocks): Remove lowered containers.
	(make_switch_expr_edges): New.
	(make_ctrl_stmt_edges): Call it.
	(make_cond_expr_edges): Use label_to_block.
	(remove_useless_stmts_and_vars_1): Don't go into SWITCH_BODY.
	(remove_unreachable_block): Remove SWITCH_EXPR special case.
	(cleanup_cond_expr_graph): Tidy.
	(cleanup_switch_expr_graph): Rewrite.
	(disconnect_unreachable_case_labels): Remove.
	(find_taken_edge_cond_expr): Use integer_zerop/integer_nonzerop.
	(find_taken_edge_switch_expr): Rewrite.
	(value_matches_some_label): Remove.
	(find_case_label_for_value): New.
	(is_ctrl_structure): Remove lowered containers.
	(is_ctrl_stmt): Add SWITCH_EXPR.
	(switch_parent): Remove.
	(handle_switch_fallthru): Remove.
	(handle_switch_split): Remove.
	(find_insert_location): Merge into ...
	(bsi_insert_on_edge_immediate): ... here.  Simplify.
	(tree_split_edge): Don't set EDGE_FALLTHRU.
	* tree-eh.c (collect_finally_tree): Remove lowered containers.
	(replace_goto_queue_1, block_may_fallthru_last): Likewise.
	(lower_eh_constructs_1): Likewise.
	(verify_norecord_switch_expr): New.
	(lower_try_finally_switch): Generate lowered switches.
	* tree-inline.c (expand_calls_inline): Don't search null SWITCH_BODY.
	* tree-pretty-print.c (dump_generic_node): Do something sensible
	with lowered switch_expr.
	* tree-ssa-dom.c (record_equivalences_from_incoming_edge): Update
	for lowered switch_expr.
	* tree.def (SWITCH_EXPR): Update docs.
	* tree.h (add_case_node): Update decl.

2003-10-29  Daniel Berlin <dberlin@dberlin.org>

	* tree-ssa-pre.c (n_phi_preds): New variable.
	(generate_vops_as_of_bb): New function
	(generate_expr_as_of_bb): Remove unused first argument. Update all
	callers.
	(subst_phis): Add boundary check for the phi_pred_cache array.
	(same_e_version_phi_result): Once modified, no point in continuing
	the loop.
	(finalize_2): ESSA Minimization can crash if we ended up with new
	BB's

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

	* tree-eh.c (do_return_redirection): Don't move copy to RESULT_DECL
	outside the RETURN_EXPR.  Introduce a new temporary as needed.

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

	* gimplify.c (keep_function_tree_in_gimple_form): Remove.
	(gimplify_function_tree): Return void.  Remove hack for
	language not supporting gimple.
	* tree.h: Update decls.
	* langhooks-def.h (LANG_HOOKS_GIMPLE_BEFORE_INLINING): New.
	* langhooks.h (struct lang_hooks): Add gimple_before_inlining.
	* tree-inline.c (copy_body_r): Check that instead of
	keep_function_tree_in_gimple_form.
	(initialize_inlined_parameters): Likewise.
	(expand_call_inline, expand_calls_inline): Likewise.

	* explow.c (probe_stack_range): Never emit loop notes.
	* expr.c (emit_block_move_via_loop): Likewise.
	* toplev.c (rest_of_compilation): Always synthesize loop notes.

2003-10-26  Zdenek Dvorak  <rakdver@atrey.karlin.mff.cuni.cz>

	* Makefile.in (gimple-low.o): Add function.h dependency.
	* gimple-low.c (struct lower_data): New field block.
	(lower_function_body, lower_stmt, lower_bind_expr): Record
	the block at statements.
	* cfglayout.c (insn_locators_initialize): Use new info about
	blocks.
	* expr.c (expand_expr): Record block changes.
	* function.c (blocks_nreverse): Export.
	(uninitialized_vars_warning): Use DECL_RTL_SET_P to test for presence
	of rtl.
	(reset_block_changes, record_block_change, finalize_block_changes,
	check_block_change, free_block_changes): New functions.
	* function.h (struct function): New bitfield dont_emit_block_notes.
	New field ib_boundaries_block.
	(blocks_nreverse, reset_block_changes, record_block_change,
	finalize_block_changes, check_block_change, free_block_changes):
	Declare.
	* sibcall.c (optimize_sibling_and_tail_recursive_call): Don't call
	reorder_blocks when dont_emit_block_notes.
	* stmt.c (expand_start_bindings_and_block, expand_end_bindings):
	Don't emit block notes when dont_emit_block_notes.
	* toplev.c (rest_of_compilation): Don't call reorder_blocks when
	dont_emit_block_notes.
	* tree.c (build1): Initialize TREE_BLOCK field.
	* tree-flow.h (lower_function_body): Declare.
	* tree-optimize.c: Include function.h.
	(optimize_function_tree): Call lower_function_body.
	* tree.h (struct tree_exp): Add block field.
	(TREE_BLOCK): New macro.

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

	* tree.h (tree_dump_index): Add TDI_lower.
	* tree-dump.c (dump_files): Add .lower entry.
	* tree-optimize.c (optimize_function_tree): Move lower_function_body,
	(tree_rest_of_compilation): here.  Tidy .useless dump.

2003-10-25  Jan Hubicka  <jh@suse.cz>

	* c-common.c (c_estimate_num_insns_1): Kill.
	(c_estimate_num_insns): Kill.
	* c-common.h (c_estimate_num_insns): Kill.
	* c-lang.c (LANG_HOOKS_TREE_INLINING_ESTIMATE_NUM_INSNS): Kill.
	* cp-lang.c (LANG_HOOKS_TREE_INLINING_ESTIMATE_NUM_INSNS): Kill.
	* objc-lang.c (LANG_HOOKS_TREE_INLINING_ESTIMATE_NUM_INSNS): Kill.
	* java/lang.c (LANG_HOOKS_TREE_INLINING_ESTIMATE_NUM_INSNS): Kill.
	(java_estimate_num_insns_1, java_estimate_num_insns): Kill.
	* cgraphunit (cgraph_analyze_function): Use estimate_num_insns.
	* tree-eh.c (decide_copy_try_finally): Likewise.
	* tree-inline.c (limits_allow_inilining, optimize_inline_calls): Likewise.
	(estimate_num_insns_1, estimate_num_insns): New functions.
	* langhooks-def.h (LANG_HOOKS_TREE_INLINING_ESTIMATE_NUM_INSNS): Kill.
	* langhooks.h (estimate_num_inssn): Kill.
	* tree-inline.h (estimate_num_insns): Declare.

2003-10-25  Zdenek Dvorak  <rakdver@atrey.karlin.mff.cuni.cz>

	* gimple-low.c: New.
	* Makefile.in (gimple-low.o): Add.
	* domwalk.c (walk_dominator_tree): Consider COND_EXPR a control
	structure.
	* tree-cfg.c (make_cond_expr_blocks, linearize_control_structures,
	linearize_cond_expr): Removed.
	(thread_jumps, tree_forwarder_block_p): New.
	(merge_tree_blocks): Unused now.
	(phi_alternatives_equal): Modified for use in jump threading.
	(enum find_location_action): Remove EDGE_INSERT_LOCATION_NEW_ELSE.
	(make_blocks): Don't call make_cond_expr_blocks.
	(set_parent_stmt): Ensure we don't set COND_EXPR as a parent
	statement.
	(find_contained_blocks): Remove COND_EXPR alternative.
	(make_cond_expr_edges): Handle lowered gotos.
	(cleanup_tree_cfg): Don't call linearize_control_structures,
	call thread_jumps and verify_flow_info and rerun cleanup_control_flow.
	(remove_unreachable_block): Remove handling of structured COND_EXPRs.
	(remove_bb): Fix warning for removed goto exprs.
	(cleanup_control_flow, cleanup_cond_expr_graph,
	cleanup_switch_expr_graph, find_taken_edge_cond_expr,
	bsi_insert_before, find_insert_location, bsi_insert_on_edge_immediate):
	Handle lowered COND_EXPRs.
	(is_ctrl_structure): Remove COND_EXPR.
	(is_ctrl_stmt): Add COND_EXPR.
	(tree_verify_flow_info): Check validity of COND_EXPRs.
	(thread_edge): Moved from tree-ssa-dom.c.
	* tree-flow.h (cleanup_cond_expr_graph, cleanup_switch_expr_graph):
	Declaration changed.
	(thread_edge, lower_function_body): Declare.
	* tree-optimize.c (optimize_function_tree): Call lower_function_body.
	* tree-pretty-print.c (dump_generic_node): Dump lowered cond_exprs in
	full.
	* tree-ssa-copyprop.c (fixup_var_scope): Handle non-SSA_NAMEs.
	* tree-ssa-dce.c (stmt_useful_p, process_worklist): Cleaned up when
	COND_EXPRs are lowered.
	* tree-ssa-dom.c (thread_edge): Moved to tree-cfg.c.
	(tree_ssa_dominator_optimize_1): Dumps and setting of vars_to_rename
	moved from thread_edge.
	(optimize_stmt): Pass block iterator to cleanup_cond_expr_graph and
	cleanup_switch_expr_graph.
	* tree-ssa.c (insert_copy_on_edge): Fixup scope for emitted variables.

	* dominance.c (BB_NODE): Use VARRAY_GENERIC_PTR_NOGC.
	(calculate_dominance_info): Use VARRAY_GENERIC_PTR_NOGC_INIT.
	* varray.c (element): Add GENERIC_PTR_NOGC entry.
	* varray.h (enum varray_data_enum): Add VARRAY_DATA_GENERIC_NOGC.
	(union varray_data_tag): Add generic_nogc.
	(VARRAY_GENERIC_PTR_NOGC_INIT,  VARRAY_GENERIC_PTR_NOGC,
	VARRAY_PUSH_GENERIC_PTR_NOGC, VARRAY_TOP_GENERIC_PTR_NOGC): New.

2003-10-25  Jan Hubicka  <jh@suse.cz>

	* cppcharset.c (one_utf8_to_utf32): Initialize 's' to silence warning.

2003-10-25  Jan Hubicka  <jh@suse.cz>

	* fold-const.c (nondestructive_fold_binary_to_constant): Realize that
	(plus (address) (const_int)) is a constant.

2003-10-25  Jan Hubicka  <jh@suse.cz>

	* opts.c (decode_options): Uncomment unit-at-a-time setting
	* params.def: Syncrhonize with manline.
	* tree-inline.c (initialize_inlined_parameters):  Set variable as
	gimplified.

2003-10-24  Steven Bosscher  <steven@gcc.gnu.org>

	* gimplify.c (create_artificial_label): New function.
	(build_and_jump): Use it.
	* c-simplify.c (c_gimplify_stmt): Likewise.
	(gimplify_condition): Likewise.
	* tree-cfg.c (factor_computed_gotos, tree_block_forwards_to,
	handle_switch_fallthru, handle_switch_split): Likewise.
	* tree-ssa-dom.c (thread_edge): Likewise.
	* tree-ssa-pre.c (split_critical_edges): Likewise.
	* tree-tailcall.c (eliminate_tail_call): Likewise.
	* tree-eh.c (frob_into_branch_around,
	honor_protect_cleanup_actions, lower_try_finally_nofallthru,
	lower_try_finally_onedest, lower_try_finally_copy,
	lower_try_finally_switch, lower_catch, lower_eh_filter,
	lower_cleanup): Likewise.
	(make_label): Remove.
	* tree-simple.h (create_artificial_label): Add prototype.
	* tree-inline.c (expand_call_inline): Make return label for
	inlined function artificial.

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

	* timevar.def (TV_TREE_SSA_THREAD_JUMPS): New timevar.
	* tree-dump.c (dump_files): Add dump file for jump threading.
	* tree.h (TDI_thread_jumps): New enum member.
	* tree-cfg.c (tree_block_forwards_to): No longer static.
	* tree-flow.h (tree_block_forwards_to): Prototype.
	(tree_ssa_dominator_thread_jumps): Likewise.
	* tree-optimize.c (optimize_function_tree): Call jump threader.
	* tree-ssa-dom.c (tree_ssa_dominator_optimize_1): New function.
	Common code for redundancy elimination and jump threading on
	the dominator tree.  Slightly different callback initialization
	for redundancy elimination and jump threading.  Initialize
	block forwardable attribute.
	(tree_ssa_dominator_optimize): Call tree_ssa_dominator_optimize_1.
	(tree_ssa_dominator_thread_jumps): New function.
	(thread_edge): Mark results of PHI nodes as needing rewriting if
	we have threaded through a block with PHI nodes.
	(thread_through_successor): If thread_through_phis is nonzero,
	then allow jump threading through blocks with PHI nodes.  If the
	target block is a forwarder block, then forward the jump.
	(thread_jumps_walk_stmts): Statement walker for dominator thread
	jumping.

	* tree-ssa-dom.c (record_equivalence_from_incoming_edge): Fix
	comment typo.

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

	* gimplify.c (gimplify_*): Return gimplify_status.
	(gimple_add_tmp_var): Set seen_in_bind_expr.
	(gimplify_bind_expr): Likewise.  Kill if 0 code.
	(gimplify_return_expr): Cope with error marks.
	(gimple_push_cleanup): Do nothing if errors seen.
	(gimplify_expr): Cope with error marks.  Use gimplify_status to
	decide when to exit the main loop.  Zap statements with errors.
	(gimplify_body): Return void.
	(keep_function_tree_in_gimple_form): Don't exit on errors.
	(gimplify_function_tree): Return bool.  Don't exit on errors.
	* langhooks.c (lhd_gimplify_expr): Return GS_UNHANDLED.
	* langhooks.h (struct lang_hooks): Update docs for gimplify_expr.
	* tree-optimize.c (optimize_function_tree): Don't exit on errors.
	Move delete_tree_cfg call outside optimization clause.
	(tree_rest_of_compilation): Don't exit on errors.
	* tree-simple.h (enum gimplify_status): New.
	(gimplify_expr, gimplify_stmt, gimplify_body): Update.
	* tree-ssa.c (rewrite_out_of_ssa): Move delete_tree_cfg call to
	optimize_function_tree.
	* tree.h (struct tree_decl): Add seen_in_bind_expr.
	(gimplify_function_tree): Update.
	* c-common.c (c_add_case_label): Unify three error exit paths.
	Create a normal label, not a case label to suppress unreachable
	code warning.
	* c-simplify.c (c_build_bind_expr): Don't create an empty bind
	body.  Pass entire bind_expr to gimplify_stmt.
	(gimplify_block): Don't abort on mismatches if errors seen.
	(gimplify_expr_stmt): Cope with error marks.
	(gimplify_decl_stmt): Likewise.
	(c_gimplify_expr): Return gimplify_status.

2003-10-22  Daniel Berlin  <dberlin@dberlin.org>

	* tree-pretty-print.c (dump_generic_node): Kill off ELEFT_NODE.
	Print out status of new EUSE_LVAL flag.

	* tree-ssa-pre.c: #include alloc-pool.h
	(append_eref_to_block): Inline.
	(names_match_p): Ditto.
	(pre_expression): Take sbitmap of variables to rename so we can
	mark our new variable if necessary.
	(insert_occ_in_preorder): Completely redo to be an O(n log n)
	algorithm worst case, instead O(n^2) all the time.
	(build_dfn_array): New function.
	(eref_compare): Ditto.
	(preorder_count): Remove no-longer used variable.
	(pre_stats): Add new stats about memory use.
	(struct expr_info): add loadpre_cand member.
	(euse_node_pool): New alloc-pool
	(eref_node_pool): Ditto
	(create_expr_ref): Use them.
	(expr_phi_insertion): Insert on PHI's of VUSES for loadpre cands.
	Not all expressions have uses (left occurrences don't).
	(load_modified_real_occ_real_occ): Return false, not abort.
	(process_delayed_rename): Remove useless fibheap, do proper LVAL
	handling.
	(insert_euse_in_preorder_dt_order_1): No more ELEFT_NODE's.
	(finalize_1): Ditto.
	(set_save): Ditto.
	(really_available_def): New function.
	(finalize_2): Use really_available_def, not EUSE_SAVE, during EPHI
	minimization.
	(names_match_p): Handle INDIRECT_REF properly.
	(call_modifies_slot): Removed.
	(add_call_to_ei): Removed.
	(process_left_occs_and_kills): Fix.
	(pre_expression): Zero out counts.
	(collect_expressions): Split out from tree_perform_ssapre. Do this
	in domtree order.
	(tree_perform_ssapre): Create and free alloc-pools.
	Rename new variables that need to be renamed.

	* tree.c (tree_size): Remove ELEFT_NODE.
	(tree_node_size): Ditto.
	(is_essa_node): Ditto.

	* tree.def (ELEFT_NODE): Gone.

	* tree.h (EREF_NODE_CHECK): No more ELEFT_NODE.
	(struct tree_eref_common): Add ID flag.
	(struct tree_euse_node): Add lval flag.
	(EREF_ID): New macro.
	(EUSE_LVAL): New macro.

2003-10-22  Daniel Berlin  <dberlin@dberlin.org>

	* tree-flow-inline.h (add_dom_child): XMALLOC, not GGC_ALLOC,
	the bitmap.
	(clear_dom_children): XFREE the bitmap.

2003-10-22  Andrew MacLeod  <amacleod@redhat.com>

	* tree-ssa-live.c (new_tree_live_info, (delete_tree_live_info,
	live_worklist, set_if_valid, add_livein_if_notdef,
	calculate_live_on_entry, calculate_live_on_exit,
	add_conflicts_if_valid, dump_live_info): Use bitmap instead of sbitmap.
	(build_tree_conflict_graph): Use bitmap, Change mechanism for
	adding conflicts between live-on-entry partitions.
	* tree-ssa-live.h (struct tree_live_info_d): Switch to bitmaps.
	(partition_is_global, live_entry_blocks, live_on_exit,
	live_merge_and_clear, make_live_on_entry): Switch to bitmaps.
	* tree-ssa.c (struct _elim_graph): Remove bitmaps, use varrays.
	(new_elim_graph, clear_elim_graph, delete_elim_graph): Switch from
	old bitmap implementation.
	(elim_graph_size): New. Number of elements in elimination graph.
	(elim_graph_add_node): New. Add an element to the elim-graph.
	(elim_graph_add_edge): New. Add an edge to the elim-graph.
	(elim_graph_remove_succ_edge): New. Remove an edge for which a node
	has a successor.
	(FOR_EACH_ELIM_GRAPH_SUCC): Find all successor nodes.
	(FOR_EACH_ELIM_GRAPH_PRED): Find all predeccesor nodes.
	(eliminate_name, eliminate_build, elim_forward,
	elim_unvisited_predecessor, elim_backward, elim_create, eliminate_phi):
	Use new elim-graph routines.
	(rewrite_out_of_ssa): Enable single-definition compaction when not
	combining temporaries.

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

	* gimplify.c: Sort functions into use order, and all gimplification
	functions to the end.

2003-10-22  Jeff Law  <law@redhat.com>

	* tree-cfg.c (thread_unconditional_jumps): New function.
	(tree_block_forwards_to): Likewise.
	(cleanup_tree_cfg): Call thread_unconditional_jumps.
	* tree-flow.h (bb_ann_t): Add forwardable status bit.

	* tree-dump.c (dump_files): Add entry for TDI_none.
	(dump_begin): Do nothing for TDI_none.
	(dump_enable_all, dump_switch_p): Start our scan at TDI_none + 1.
	* tree.h (tree_dump_index): Add.
	* tree-ssa-dom.c (tree_ssa_dominator_optimize): If we have altered the
	CFG and we have variables to [re]rename, go ahead and rename them before
	starting the next iteration of the dominator optimizer.

2003-10-21  Jason Merrill  <jason@redhat.com>

	* gimplify.c (gimplify_modify_expr): Require a regvar on either
	the lhs or rhs if we're dealing with a renameable type.
	(canonicalize_component_ref): New fn.
	(gimplify_compound_lval): Use it.
	(gimplify_conversion): Use it.
	(gimplify_expr): Lose redundant STRIP_MAIN_TYPE_NOPS.
	Discard conversions in void context.

2003-10-21  Daniel Berlin  <dberlin@dberlin.org>

	* tree-ssa-pre.c (pre_expression): Free and allocate the
	ephi_pindex_htab and phi_pred_cache in this function only.
	(phi_pred_cache): New array to store cached phi preds, to avoid
	recomputation and unnecessary copying.
	(subst_phis): Use it.
	(added_phis): array of added phis that is marked for GC.

	* Makefile.in: Add tree-ssa-pre.c to the gtype files, and
	gt-tree-ssa-pre.h to the list of generated files.

2003-10-21  Jason Merrill  <jason@redhat.com>

	PR optimization/12661
	* tree-dfa.c (get_expr_operands): Handle TRUTH_NOT_EXPR.
	* tree-simple.c (is_gimple_rhs): Allow TRUTH_NOT_EXPR.
	* gimplify.c (gimplify_expr) <TRUTH_NOT_EXPR>: Don't rewrite to an
	EQ_EXPR.

2003-10-21  Jan Hubicka  <jh@suse.cz>

	* haifa-sched.c (choose_ready): Initialize index.
	* tree-tailcall.c (bb_optimize_tail_calls): Initialize has_return.
	* f/lex.c (ffelex_cfelex_): Initialize d.

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

	Fix PR optimization/12688
	* tree-dfa.c (get_stmt_operands): Don't return early when dealing
	with an empty statement.
	* tree-ssa-ccp.c (set_rhs): If the expression has no side effects,
	replace the statement with an empty statement.

2003-10-20  Andrew MacLeod  <amacleod@redhat.com>

	* tree-ssa-dce.c (processed): Change to an sbitmap.
	(mark_necessary): Test bits in 'processed'.
	(tree_ssa_dce): Initialize/free processed as an sbitmap.

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

	* tree-cfg.c (bsi_prev): Also copy the context from the previous
	iterator.

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

	* builtins.c (simplify_builtin): Handle BUILT_IN_CONSTANT_P.

2003-10-18  Zdenek Dvorak  <rakdver@atrey.karlin.mff.cuni.cz>

	* tree-tailcall.c: New.
	* Makefile.in (tree-tailcall.o): Add.
	* function.c (assign_parms): Setting of current_function_stdarg
	moved ...
	(allocate_struct_function): ... here.
	* tree-dump.c (dump_files): Add .tail dump.
	* tree-flow.h (tree_optimize_tail_calls): Declare.
	* tree-optimize.c (optimize_function_tree): Call
	tree_optimize_tail_calls.
	* tree.h (enum tree_dump_index): Add TDI_tail.

2003-10-18  Jan Hubicka  <jh@suse.cz>

	* tree-ssa-copyprop.c (move_var_to_scope):  Do not clear abstract
	origin for static variables.

2003-10-18  Jan Hubicka  <jh@suse.cz>

	* integrate.c (copy_decl_for_inlinig): Fix copying of copies.

2003-10-18  Jan Hubicka  <jh@suse.cz>

	* cgraphunit.c (cgraph_analyze_function):  Fix call of estimate_num_insns.

2003-10-17  Kazu Hirata  <kazu@cs.umass.edu>

	* ChangeLog.tree-ssa: Fix typos.
	* tree-alias-common.c: Fix comment typos.
	* tree-cfg.c: Likewise.
	* tree-dfa.c: Likewise.
	* tree-eh.c: Likewise.
	* tree-flow.h: Likewise.
	* tree-iterator.h: Likewise.
	* tree-mudflap.c: Likewise.
	* tree-ssa-ccp.c: Likewise.
	* tree-ssa-dce.c: Likewise.
	* tree-ssa-dom.c: Likewise.
	* tree-ssa-live.c: Likewise.
	* tree-ssa-live.h: Likewise.
	* tree-ssa-pre.c: Likewise.
	* tree-ssa.c: Likewise.

2003-10-17  Andrew MacLeod  <amacleod@redhat.com>

	* tree-ssa-dce.c (processed): New Global vector.
	(mark_necessary): Check if SSA_NAME has already been processed first.
	(find_useful_stmts, process_worklist): Change call to mark_necessary().
	(tree_ssa_dce): Initialize and free processed vector.
	* tree-cfg.c (handle_switch_fallthru): A new basic block can result
	from splitting edges of nested switch stmts.
	(handle_switch_split): If a new block is created, restart the loop for
	inserting GOTO's to handle the new block.

2003-10-17  Jan Hubicka  <jh@suse.cz>

	* tree-cfg.c (remove_useless_stmts_and_vars_bind): Fix handling of
	static variables.

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

	* common.opt (fdisable-gimple): Remove.
	* flags.h (flag_disable_gimple): Remove.
	* toplev.c (flag_disable_gimple): Remove.
	(process_options): Don't check it.
	(lang_independent_options): Don't set it.
	* opts.c (common_handle_option): Likewise.
	* gimplify.c (keep_function_tree_in_gimple_form): Don't check it.
	* c-semantics.c (expand_stmt_toplev): Likewise.
	* tree-optimize.c (tree_rest_of_compilation): Likewise.
	* doc/invoke.texi: Don't document it.

2003-10-16  Roger Sayle  <roger@eyesopen.com>

	* fold-const.c: Merge from mainline.
	* tree.c (associate_tree_code, commutative_tree_code): Use a
	switch statement instead of a sequence of comparisons.

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

	* gimplify.c (maybe_protect_cleanup): Remove.
	* tree-simple.h (maybe_protect_cleanup): Remove.
	* c-simplify.c (gimplify_cleanup): Don't call it.

2003-10-16  Jeff Law  <law@redhat.com>

	* tree-cfg.c (found_computed_goto): New global for computed goto
	factoring/unfactoring.
	(factored_computed_goto_label, factored_computed_goto): Likewise.
	(factor_computed_gotos): New function.
	(build_tree_cfg): Use it.
	(make_blocks): Record whether or not we find a computed goto.
	(remove_useless_stmts_and_vars): Un-factor computed gotos.
	(remove_useless_stmts_and_vars): Reset factored_computed_goto_label
	and factored_computed_goto.

	* tree-ssa-dom.c (get_value_for, set_value_for): Move to the start
	of the file.  Delete pointless sanity checking.

	* tree-ssa.c (currdefs): Now a varray instead of a hash table.
	(get_value_for, set_value_for): Corresponding changes.  Move to
	the start of the file and delete pointless sanity checking.
	(rewrite_into_ssa, dump_tree_ssa_stats): Corresponding changes.
	(var_value_hash, var_value_eq): Kill.

	* tree-ssa.c (rewrite_add_phi_arguments): Once we encounter a
	rewritten PHI break the inner loop.

	* tree-ssa.c (insert_phi_nodes_for): Use EXECUTE_IF_AND_COMPL_IN_BITMAP.

	* tree-dfa.c (create_phi_node):  Clear PHI_REWRITTEN on all new PHIs
	(remove_all_phi_nodes_for): Set PHI_REWRITTEN on any PHIs which are
	not removed.
	* tree-ssa.c (rewrite_add_phi_arguments): Check the PHI node itself
	to see if it has already been rewritten.
	* tree.h (PHI_REWRITTEN): New accessor macro.
	(struct phi_node): New field rewritten.

	* tree-flow.h (struct bb_ann_d): New field num_preds.
	* tree-dfa.c (create_phi_node): Get the number of predecessors from
	the block's annotation.
	* tree-ssa.c (rewrite_into_ssa): Compute number of preds for each
	block and store it into the block's annotation.
	(insert_phi_nodes_for): Get the number of preds for each block
	from the block's annotation.

	* tree-ssa.c: Remove parallel lifetime analysis code from April 2003.
	(def_blocks_d): Remove PHI_INSERTION_POINTS field.
	(compute_global_livein): Accept livein/def bitmaps to use for
	life analyis rather than a varray of variables.  Callers updated.
	Rewritten to compute life information for one variable at a
	time instead of several variables at once.
	(insert_phis_for_deferred_variables): Remove.
	(insert_phi_nodes_for): Lose varray argument.  Callers updated.
	No longer mess with deferring PHI insertions for variables.
	(insert_phi_nodes): No longer need to deal with deferred variables.
	Kill everything related to them.

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

	* domwalk.c, domwalk.h: New files.
	* Makefile.in (OBJS-common): Add domwalk.c.
	(tree-ssa-dom.o): Add dependency on $(BASIC_BLOCK_H) and domwalk.h.
	(tree-ssa.o): Add dependency on domwalk.h.
	(domwalk.o): Add dependencies.
	* tree-ssa-dom.c: Include domwalk.h.
	(cfg_altered, vars_to_rename): Now globals.
	(dom_walk_block_data): New structure for block data used by dominator
	walker.
	(optimize_block, record_equivalences_from_block_entry): Kill.
	(optimize_stmt): Lose "cfg_altered" argument.  Update callers.
	Initialize may_have_exposed_new_symbols.
	(get_value_for, set_value_for): Lose "table" argument.  Update
	callers.  Use const_and_copies table directly.
	(lookup_avail_expr): Lose "const_and_copies" argument.  Callers
	updated.
	(get_eq_expr_value): Similarly.  Also accept a pointer to the
	vrp_variables. Callers updated.
	(update_rhs_and_lookup_avail_expr): Similarly.
	(record_cond_is_true, record_cond_is_false): Similarly.
	(simplify_rhs_and_lookup_avail_expr): Similarly.
	(simplify_cond_and_lookup_avail_expr): Similarly.
	(record_equivalences_from_phis): Similarly.
	(record_equivalences_from_incoming_edge): Similarly.  Also accept
	a pointer to the block const_and_copies table and vrp_variables.
	Callers updated.
	(eliminate_redundant_computations): Similarly
	(record_equivalences_from_stmt, thread_through_successor): Similarly.
	(dom_opt_initialize_block): New function.  Perform block local
	initialization for the dominator optimizer.
	(dom_opt_finalize_block): Renamed from finalize_block.  Get
	block local varrays from walk_data.  Pop entry off block local
	data stack when complete.
	(dom_opt_walk_stmts): New function.
	(cprop_into_phis): Get block local varrays from walk_data.
	(record_range): Get vrp varray by reference than by value.
	(tree_ssa_dominator_optimize): Store incoming "vars" variable into
	global "vars_to_rename".  Initialize walk_data.  Use
	walk_dominator_tree.
	(cprop_into_stmt): Initialize may_have_exposed_new_symbols.
	* tree-ssa.c: Include domwalk.h
	(rewrite_finalize_block, rewrite_initialize_block): New functions
	extracted from rewrite_block.
	(rewrite_walk_stmts, rewrite_add_phi_arguments): Similarly.
	(rewrite_block): Kill.
	(rewrite_into_ssa): Initialize walk_data.  Use walk_dominator_tree.

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

	* gimplify.c (gimplify_expr): Return bool.  Bail gracefully if
	fb_mayfail is set.
	(gimplify_asm_expr): Take pointer-to-expr.  Allow gimplify_expr
	to fail for lvalues, and issue appropriate error messages.  Zap
	the entire asm statement on failure.
	* tree-simple.h (enum fallback_t): Add fb_mayfail.

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

	* c-tree.h (C_LANG_TREE_NODE_CHAIN_NEXT): New.
	(union lang_tree_node): Use it for chain_next annotation.

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

	* c-common.c: Include tree-iterator.h.
	(c_expand_expr): Kill warn_unused_result checks.
	(c_warn_unused_result): New.
	* c-common.h (STMT_EXPR_WARN_UNUSED_RESULT): Remove.
	(c_warn_unused_result): Declare.
	* c-decl.c (finish_function): Always gimplify.  Call
	c_warn_unused_result.
	* calls.c (expand_call): Kill warn_unused_result checks.
	* Makefile.in (c-common.o): Update.

2003-10-15  Steven Bosscher  <steven@gcc.gnu.org>

	* cfghooks.c (dump_bb): Take extra `int indent' argument.
	* cfg.c (dump_bb): Take extra argument to match cfg hook.
	Write out all information about bb that is shared between the tree
	and rtl representations.
	* basic-block.c (dump_bb): Adjust prototype.
	* cfgrtl.c (rtl_dump_bb): Update prototype to match cfg hook.
	Use indent.
	* flow.c (verify_wide_reg, verify_local_live_at_start):
	Fixup dump_bb calls.
	* tree-cfg.c (dump_tree_bb): Rename to tree_dump_bb.  Remove unused
	 `prefix' argument.  Put in tree_cfg_hooks as cfg hook for dump_bb.
	(remove_bb, debug_tree_bb, dump_tree_cfg): Call dump_bb.
	* tree-ssa (dump_tree_ssa): Likewise.
	* tree-flow.h (dump_tree_bb): Replace with new tree_dump_bb
	prototype.
	* tree-pretty-print (dump_block_info): Match case of BLOCK, SUCC,
	PRED with dump_bb.

2003-10-14  Daniel Berlin  <dberlin@dberlin.org>

	* tree-alias-ander.c (throwaway_global): Delete.
	(andersen_same_ponts_to_set): We handle all globals individually
	now.
	* tree-alias-common.c:  Remove doxygen markers.
	(get_alias_var_decl): Always create an alias var for globals now.
	Assign the global alias vars to GLOBAL_VAR, too.
	(intra_function_call): Fix logic, do a bit of pre-filtering to
	avoid useless global aliasing.
	(get_values_from_constructor): It's the same for field based and
	not field based.
	(create_alias_vars): Remove special global var handling.
	(same_points_to_set): Ditto.
	(ptr_may_alias_var): Ditto.

2003-10-14  Jeff Law  <law@redhat.com>

	* tree-ssa-dom.c (cprop_into_phis): Avoid doing useless work if the
	edge we care about is abnormal.
	* tree-ssa-copyprop (cprop_phi): Avoid doing useless work if the
	destination of the PHI node occurs in an abnormal PHI.

	* tree-ssa-dom.c (record_equivalences_from_stmt): Renamed from
	record_equivalances.  Caller updated.
	(record_equivalences_from_phis): New function extracted from
	optimize_block.
	(record_equivalences_from_incoming_edge): Likewise.
	(record_equivalances_from_block_entry): Likewise.
	(cprop_into_phis): Likewise.
	(optimize_stmt): Lots of code moved into new functions.  Call
	record_equivlances_from_block_entry.

	* tree-ssa-dom.c (optimize_block): Simplify interface slightly.
	Use finalize_block.  Extract edge_flags from our block's
	incoming edge as necessary.  Simplify recursive call.
	(thread_through_successor): Extracted from optimize_block.
	(finalize_block): Similarly.

	* tree-ssa-dom.c (eliminate_redundant_computations): New function
	extracted from optimize_stmt.
	(record_equivalences): Similarly.
	(optimize_stmt): Use eliminate_redundant_computations and
	record_equivalences.  If fold_stmt changes stmt, then make sure
	to get a new annotation as well.

	* tree-cfg.c (cleanup_control_flow): Pass last statement down to
	cleanup_cond_expr_graph and cleanup_switch_expr_graph.
	(cleanup_cond_expr_graph): Accept statement from caller and
	use it.  Return nonzero if the predicate was constant.  No longer
	static.
	(cleanup_switch_expr_graph): Similarly.
	(disconnect_unreachable_case_labels): Similarly, except that it
	is still static.
	* tree-flow.h (cleanup_cond_expr_graph): Prototype.
	(cleanup_switch_expr_graph): Similarly.
	* tree-ssa-dom.c (optimize_stmt): Also optimize the condition
	in a SWITCH_EXPR.  Use COND_EXPR_COND and SWITCH_COND to get
	conditions instead of relying upon known operand positions.
	Use cleanup_cond_expr_graph and cleanup_switch_expr_graph rather
	than open coding equivalents.
	(lookup_avail_expr): Handle SWITCH_EXPRs.  Use COND_EXPR_COND and
	SWITCH_COND to get conditions instead of relying upon known
	operand positions.
	(avail_expr_hash, avail_expr_eq): Similarly.

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

	* gimplify.c (gimplify_body): Save and restore input_location;
	initialize input_location to DECL_SOURCE_LOCATION.
	(gimplify_expr): Always save and restore input_location.

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

	* expr.c (expand_expr): Break out EXPR_LOCUS code from ...
	(expand_expr_1): ... here, renamed from expand_expr.

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

	* c-simplify.c (c_gimplify_stmt): Upreate on location_t and not
	fine and line individually.
	(gimplify_c_loop, gimplify_switch_stmt): Likewise.
	* gimplify.c (wfl_locus): Merge wfl_filename+wfl_lineno.
	(annotate_all_with_locus_1): Rename from annotate_stmt_with_file_line.
	(annotate_all_with_locus): Replace annotate_all_with_file_line;
	update all callers.
	* tree-simple.h: Update.
	* tree.c, tree.h (annotate_with_locus): New.

2003-10-13  Steven Bosscher  <steven@gcc.gnu.org>

	* tree-flow-inline.h (def_ops): Take a stmt_ann_t as argument
	instead of a tree.
	(use_ops): Likewise.
	(vdef_ops): Likewise.
	(vuse_ops): Likewise.
	* tree-flow.h: Update prototypes.
	* tree-cfg.c (remove_stmt): Load the statement annotation.
	Adjust *_ops calls.
	* tree-dfa.c (compute_immediate_uses_for_stmt,
	mark_new_vars_to_rename): Likewise.
	* tree-pretty-print.c (dump_vops): Likewise.
	* tree-ssa-ccp.c (tree_ssa_ccp): Likewise.  Also remove now
	superfluous stmt_ann() calls.
	(visit_stmt, cpp_fold, add_var_to_ssa_edges_worklist,
	initialize, replace_uses_in, likely_value): Likewise.
	* tree-ssa-copyprop.c (copyprop_stmt): Likewise.
	* tree-ssa-dce.c (stmt_useful_p, process_worklist): Likewise.
	* tree-ssa-dom.c (cprop_into_stmt, optimize_stmt,
	avail_expr_hash, avail_expr_eq):
	Likewise.
	* tree-ssa-live.c (create_ssa_var_map, calculate_live_on_entry,
	build_tree_conflict_graph): Likewise.
	* tree-ssa-pre.c (maybe_find_rhs_use_for_var,
	expr_phi_insertion, same_e_version_real_occ_real_occ,
	generate_expr_as_of_bb, bool load_modified_real_occ_real_occ,
	bool same_e_version_phi_result, get_default_def,reaching_def,
	tree_perform_ssapre): Likewise.
	* tree-ssa.c (mark_def_sites, rewrite_out_of_ssa, rewrite_stmt):
	Likewise.

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

	* gimplify.c (gimplify_array_ref_to_plus): Be prepared for
	null TYPE_DOMAIN or TYPE_MIN_VALUE for the array.
	* tree-ssa-ccp.c (fold_indirect_refs_r): Likewise.

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

	* tree.h (struct tree_common): Rename unused_1 to invariant_flag.
	(TREE_INVARIANT): New.
	* builtins.c (build_string_literal): Set TREE_INVARIANT.
	* c-common.c (fix_string_type): Likewise.
	* c-typeck.c (build_external_ref): Likewise.
	(build_c_cast, pop_init_level): Likewise.
	* fold-const.c (fold_convert, fold): Likewise.
	* tree.c (make_node, build_constructor): Likewise.
	(build, build1): Likewise.
	(staticp): Pass unknown component references to the language.
	(save_expr): Check TREE_INVARIANT instead of TREE_CONSTANT.
	(skip_simple_arithmetic): Likewise.
	(stabilize_reference_1): Likewise.
	* print-tree.c (print_node): Print TREE_INVARIANT.

	* c-common.c (pointer_int_sum): Rely on build to set TREE_CONSTANT.
	(finish_label_address_expr): Likewise.
	* c-typeck.c (default_function_array_conversion): Likewise.
	(parser_build_binary_op, pointer_diff): Likewise.
	(build_unary_op, build_binary_op): Likewise.
	* fold-const.c (non_lvalue): Likewise.

	* tree-pretty-print.c (dump_generic_node): Handle VIEW_CONVERT_EXPR.

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

	* gimplify.c (gimplify_array_ref_to_plus): Subtract the array
	domain minimum index.
	(gimplify_addr_expr): Expand ARRAY_REFs.  Cope with Fortran
	missing cast wierdnesses.
	* tree-dfa.c (get_expr_operands): Handle (&v + c); abort on
	other address invariants that should have been folded.
	(vdefs_disappeared_p): New.
	(mark_new_vars_to_rename): Use it.  Move from ...
	* tree-ssa-dom.c: ... here.
	* tree-flow-inline.h (is_unchanging_value): Remove; use
	is_gimple_min_invariant everywhere instead.
	(phi_ssa_name_p): New.
	* tree-must-alias.c (find_addressable_vars): Process PHIs.
	* tree-simple.c (is_gimple_min_invariant): Rename from
	is_gimple_const; allow non-static variable addresses; update callers.
	(is_gimple_val): Remove ADDR_EXPR checks.
	* tree-simple.h: Update.
	* tree-ssa-ccp.c (replace_uses_in): Add replaced_address argument.
	(substitute_and_fold): Use that to mark_new_vars_to_rename.
	(fold_indirect_refs_r): New.
	(fold_stmt): Use it.
	* tree-ssa-copyprop.c (copyprop_stmt): Call fold_stmt.
	* tree-ssa-dce.c (NECESSARY): Use asm_written_flag.
	(mark_necessary): Reject DECLs.
	* tree-ssa-live.c (register_ssa_partition): Use phi_ssa_name_p.
	* tree-ssa-pre.c (generate_expr_as_of_bb): Call fold_stmt if we
	replaced with constants.
	* tree-ssa.c (insert_copy_on_edge): Unwrap ADDR_EXPRs to set_is_used.
	(eliminate_build, coalesce_abnormal_edges, coalesce_vars): Use
	phi_ssa_name_p.

2003-10-09  Frank Ch. Eigler  <fche@redhat.com>

	java/12211
	* gimplify.c (gimplify_save_expr): Tolerate void-typed saved
	expressions.

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

	* tree-dfa.c (add_call_clobber_ops): If a variable is read-only,
	add a VUSE operand instead of VDEF.

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

	PR optimization/12525
	* tree-dfa.c (note_addressable): New fn, split out from...
	(add_stmt_operands): Here.
	(get_stmt_operands) <ASM_EXPR>: Call it for mem ops.
	* gimplify.c (gimplify_asm_expr): Call parse_input_constraint
	directly.  It's only a mem op if allows_mem is set.

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

	PR/12187
	* tree-dfa.c (add_stmt_operand): Test against current_function_decl
	when checking for global variables.
	(may_access_global_mem_p): Likewise.
	(add_referenced_var): Likewise.
	Consider DECL_NONLOCAL variables call clobbered and used.
	(find_hidden_use_vars): Do not test for DECL_NONLOCAL variables.
	* tree-optimize.c (tree_rest_of_compilation): Test against
	current_function_decl when checking for global variables.
	* tree-ssa-ccp.c (get_default_value): Likewise.
	* tree-ssa-dce.c (need_to_preserve_store): Likewise.

2003-10-07  Jason Merrill  <jason@redhat.com>

	PR optimization/12525
	* gimplify.c (gimplify_asm_expr): If the constraint doesn't allow
	a register, call mark_addressable.  Split an in/out operand that
	does allow a register into separate input and output operands.

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

	* fold-const.c (fold): Fold (T1)((T2)X op Y) into (T1)X op Y,
	for suitable values of T1 & T2.

2003-10-06  Andrew Macleod  <amacleod@redhat.com>

	* tree-dfa.c (compute_immediate_uses): Add optional callback.
	(compute_immediate_uses_for_phi): Remove unused parameter. Add optional
	callback to determine if usage info should be calculated for variable.
	(compute_immediate_uses_for_stmt): Add optional callback to determine
	if usage info should be calculated for variable.
	* tree-flow.h (compute_immediate_uses): Update prototype.
	* tree-ssa-ccp.c (need_imm_uses_for): New. Callback function passed to
	compute_immediate_uses.
	(initialize): Calculate defaults initially, then build reduced
	immediate use information.
	(get_default_value): Non empty stmt's which are not a PHI_NODE or
	a MODIFY_EXPR default to VARYING.

2003-10-06  Andrew Macleod  <amacleod@redhat.com>

	* tree-cfg.c (tree_split_edge): Mark edge as FALLTHRU when splitting.

2003-10-03  Zdenek Dvorak  <rakdver@atrey.karlin.mff.cuni.cz>

	* tree-ssa.c (rewrite_block): Test vars_to_rename instead of
	PHI_ARG_CAPACITY.
	* tree-dfa.c (remove_phi_arg_num): Don't update
	PHI_ARG_CAPACITY.

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

	* c-decl.c (set_decl_nonlocal): New.
	(store_parm_decls): Use it via walk_tree.

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

	* tree-ssa-dom.c (cprop_into_stmt): New function extracted from
	optimize_stmt.
	(optimize_stmt): Use cprop_into_stmt.

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

	* function.h (struct function): Add function_end_locus.
	* c-decl.c (finish_function): Set it.
	* tree-optimize.c (tree_rest_of_compilation): Set input_location
	to function_end_locus before expand_function_end.

	* tree-optimize.c (optimize_function_tree): Move calls to
	remove_useless_stmts_and_vars and lower_eh_constructs ...
	(tree_rest_of_compilation): ... here.

	* c-simplify.c (gimplify_expr_stmt): Don't warn for any statement
	with void result type.

2003-09-30  Jeff Law  <law@redhat.com>

	* tree-ssa-dom.c (simplify_cond_and_lookup_avail_expr): Fix thinko
	in test for swapping ranges.

	* tree-ssa-dom.c (record_range): New function.
	(extract_range_from_cond): Likewise.
	(tree_ssa_dominator_optimize): Initialize the vrp_data varray.
	(optimize_block): Initialize the vrp_variables varray.  Wipe
	appropriate entries from the VRP varrays when done processing a block.
	(get_eq_expr_value): Accept new argument "bb".  Call record_range
	appropriately.  Refactor code to avoid useless work.
	(simplify_cond_and_lookup_avail_expr): Use value range records to
	simplify conditions.
	(simplify_rhs_and_lookup_avail_expr): When simplifying ABS_EXPR,
	DIV_EXPR and MOD_EXPR, use simplify_cond_and_lookup_avail_expr
	to determine the range of the given variable.

	* tree-ssa-dom.c (find_equivalent_equality_comparison): Do not
	look through a typecast which narrows a value.

2003-09-30  Paul Brook  <paul@nowt.org>

	* Makefile.in: Add rules for check-gfortran.

2003-09-29  Richard Henderson  <rth@redhat.com>

	* gimplify.c (gimplify_cond_expr): Fix both arms dead return value.

2003-09-29  Jeff Law  <law@redhat.com>

	* tree-ssa-dom.c (simplify_cond_and_lookup_avail_expr): New function.
	(find_equivalent_equality_comparison): Likewise.
	(optimize_block): Remove code to build a == c equivalence after
	seeing a == b and b == c.  Remove code to walk backwards
	though typecasts to record equivalences and move relevant parts
	into find_equivalent_equality_comparison.
	(optimize_stmt): Call simplify_cond_and_lookup_avail_expr.

2003-09-28  Richard Henderson  <rth@redhat.com>

	* gimplify.c (gimplify_call_expr): Annotate all call_exprs.
	* tree-inline.c (expand_call_inline): Set input_location based
	on EXPR_LOCUS; save and restore input_location around that.
	(walk_tree): Do not set input_location.

2003-09-27  Graham Stott  <graham.stott@btinternet.com>

	* expr.c (expand_expr)[CATCH_EXPR]: Fix bogus return value.

2003-09-26  Andrew MacLeod  <amacloeod@redhat.com>

	* tree-ssa-dom.c (struct var_value_d): Remove.
	(const_and_copies): Change to a varray_type.
	(tree_ssa_dominator_optimize): Initialize const_and_copies as a varray.
	(optimize_block): Simply set the value in const_and_copies.
	(dump_dominator_optimization_stats): No hash stats for const_and_copies.
	(record_cond_is_true, record_cond_is_false,
	simplify_rhs_and_lookup_avail_expr, update_rhs_and_lookup_avail_expr):
	Parameter const_and_copies is now a varray_type.
	(var_value_hash, var_value_eq): Remove.
	(get_value_for, set_value_for): Access varray elements.
	(get_eq_expr_value): Parameter const_and_copies is now a varray_type.

	* tree-cfg.c (handle_switch_split): Update container of previous stmt.

2003-09-25  Daniel Berlin  <dberlin@dberlin.org>

	* tree-ssa-pre.c (split_critical_edges): New function, temporarily
	disabled until some edge splitting/insertion problems are fixed.
	(opnum_of_ephi): Take an edge argument, constify. Use hash table lookup.
	Update all callers.
	(ephi_pindex_eq): New function.
	(ephi_pindex_hash): New function.
	(ephi_pindex_htab): New variable.
	(add_ephi_pred): Update hash table.
	(expr_phi_insertion): Don't free the bitmap returned by compute_idfs
	anymore.
	(idfs_cache): New variable.
	(compute_idfs): Rewrite to use cache as much as possible, and not
	recompute when we can avoid it.

2003-09-25  Daniel Berlin  <dberlin@dberlin.org>

	* tree-alias-ander.c:  Fixup comment spacing.
	(andersen_op_assign):  Handle >2 operands case.

2003-09-24  Steven Bosscher  <steven@gcc.gnu.org>

	* tree-dfa.c (compute_immediate_uses_for): Split up in two
	separate functions, one for PHIs and one for normal statements.
	(compute_immediate_uses_for_phi): New.
	(compute_immediate_uses_for_stmt): New.

2003-09-25  Jeff Law  <law@redhat.com>

	* tree-ssa-dom.c (optimize_block): When EQ_EXPR_VALUE has the
	form DEST = SRC where both DEST and SRC are SSA_NAMEs also
	record SRC = DEST into the const and copies table.

	* tree-ssa-dom.c (optimize_block): Change tests which checked
	for SSA_VAR_P to only allow SSA_NAMEs.
	(get_value_for, set_value_for): Likewise.
	(lookup_avail_expr, get_eq_expr_value): Likewise.

2003-09-25  Andrew MacLeod  <amacleod@redhat.com>

	* tree-ssa-dce.c (pdom_info, needed_stmts): Remove.
	(NECESSARY): Define.
	(necessary_p): Check bit instead of hash table lookup.
	(clear_necessary): New. Clear necessary bit.
	(mark_necessary): Use bit instead of hash table. No control lookup.
	(mark_tree_necessary): Remove.
	(find_useful_stmts): Clear necessary bit before checking it.
	(stmt_useful_p): Remove GOTO_EXPR case. Check arms of COND_EXPR for
	GOTO. All other control flow stmts are necessary.
	(process_worklist): Dont look for control parents.
	(remove_dead_stmts): No dominattor info is necessary.
	(remove_dead_stmt): Don't need BB any more. Remove COND_EXPR by changing
	the condition to 'if (0)'. Abort on other control flow.
	(tree_ssa_dce): No longer need the hash table.
	(remove_conditional): Remove.

2003-09-25  Andreas Schwab  <schwab@suse.de>

	* tree-flow.h: Declare next_ssa_version.
	* tree-ssa-ccp.c: Remove conflicting declaration.
	* tree-ssa-live.c: Likewise.
	* tree.c (make_ssa_name): Likewise.

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

	* tree.h (DECL_SOURCE_LOCATION): Resurrect.
	(DECL_SOURCE_FILE, DECL_SOURCE_LINE): Likewise.
	(EXPR_LOCUS): Renamed from TREE_LOCUS.  Null for non-exprs.
	(SET_EXPR_LOCUS): New macro.
	(EXPR_FILENAME): Renamed from TREE_FILENAME.
	(EXPR_LINENO): Renamed from TREE_LINENO.
	(struct tree_common): Remove locus field.
	(struct tree_decl): Re-add locus field.
	(struct tree_expr): Add locus field.
	* c-aux-info.c, c-decl.c, coverage.c, c-parse.in, dbxout.c,
	diagnostic.c, dwarf2out.c, expr.c, function.c, gimplify.c,
	integrate.c, print-tree.c, stmt.c, tree.c, tree-cfg.c,
	tree-dump.c, tree-flow-inline.h, config/alpha/alpha.c,
	config/mips/mips.c: Adjust.

2003-09-24  Andrew MacLeod  <amacleod@redhat.com>

	* tree-ssa-ccp.c (enum latticevalue): Add UNINITIALIZED.
	(const_values, struct value_map_d): Remove hash table structures.
	(value_vector): New array of values.
	(get_value): Use value_vector instead of hash table. Mark inline.
	(visit_phi_node): Ignore arguments if the PHI result is already VARYING.
	(initialize): Initialize value vector instead of hash table.
	(finalize): Free value vector instead of hash table.
	(add_var_to_ssa_edges_worklist): Don't add to worklist if
	DONT_SIMULATE_AGAIN flag is set.
	(value_map_hash, value_map_eq): Delete.

2003-09-24  Jeff Law  <law@redhat.com>

	* tree-ssa-dom.c (optimize_block): Create infrastructure for
	tracking const_and_copies equivalences which disappear when
	we leave the current block.  Use it for equivalences created
	by EQ_EXPR_VALUE.  Follow use-def chains for EQ_EXPR_VALUE
	equivalences and see if certain NOP_EXPRs can be ignored
	to create a block-local equivalence for const_and_copies.
	(optimize_stmt): Do not get confused by a cast of the return
	value from alloca or the address of a non-weak decl.

	* fold-const.c (fold_read_from_constant_string): New function.
	* tree.h (fold_read_from_constant_string): Prototype.
	* expr.c (expand_expr, case INDIRECT_REF):  Use it.
	(expand_expr, case ARRAY_REF): Likewise.  Put checking code
	inside an ENABLE_CHECKING.
	* tree-ssa-ccp.c (fold_stmt): Use fold_read_from_constant_string.
	* tree-ssa-dom.c (simplify_rhs_and_lookup_avail_expr): Likewise.

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

	* tree-ssa-dom.c (optimize_block): Ignore "useless" type
	conversions in SWITCH_COND when creating equivalenecs at
	case labels.

2003-09-22  Jeff Law  <law@redhat.com>

	* tree-ssa-dom.c (optimize_stmt): Addresses of non-weak symbols
	as well as dynamically allocated stack space are always nonzero.

	* tree-cfg.c (handle_switch_split): Properly mark the fallthru
	edge from SRC to DEST with EDGE_FALLTHRU.

2003-09-22  Daniel Berlin  <dberlin@dberlin.org>

	* tree-flow.h (struct bb_ann_d): Add erefs array.
	* tree-ssa-pre.c (handle_bb_creation): Remove ei parameter.
	Update caller.
	(struct expr_info): Remove erefs array.
	(append_eref_to_block): New function.
	(clear_all_eref_arrays): Ditto.
	(expr_phi_insertion): Use append_eref_to_block.
	(insert_occ_in_preorder_dt_order_1): Ditto.
	(subst_phis): Only copy expression, not the containing EUSE/EPHI.
	Update all callers to reflect this.
	(compute_will_be_avail): Update for per-block eref array.
	(handle_bb_creation): Ditto.
	(pre_expression): Ditto.
	(tree_perform_ssapre): Clear eref arrays when done with expression.

2003-09-22  Diego Novillo  <dnovillo@redhat.com>

	* tree-cfg.c (dump_tree_bb): Remove superlfuous newlines.

2003-09-21  Diego Novillo  <dnovillo@redhat.com>

	* tree-dfa.c (compute_alias_sets): Use TDI_alias instead of
	TDI_ssa.
	* tree-dump.c (dump_files): Add enties for TDI_alias, TDI_ssa1,
	TDI_dom1, TDI_ssa2, TDI_dce1, TDI_ssa3, TDI_dom2, TDI_ssa4,
	TDI_ssa5 and TDI_dce2.
	Remove entries for TDI_ssa, TDI_dom and TDI_dce.
	* tree.h (enum tree_dump_index): Similarly.
	(TDF_ALIAS): Remove.
	(TDF_VOPS): Change value.
	* doc/invoke.texi (-fdump-tree-alias): Document.
	* tree-flow.h (tree_warn_uninitialized): Remove unused variable.
	(rewrite_into_ssa): Add enum tree_dump_index argument.  Update all
	callers.
	(rewrite_out_of_ssa): Likewise.
	(tree_perform_ssa_pre): Likewise.
	(tree_ssa_dominator_optimize): Likewise.
	(tree_ssa_dce): Likewise.
	(tree_ssa_copyprop): Likewise.
	(tree_ssa_ccp): Likewise.
	Add sbitmap argument.
	(tree_compute_must_alias): Likewise.
	(mark_new_vars_to_rename): Declare.
	* tree-must-alias.c (tree_compute_must_alias): Do not call
	rewrite_into_ssa.
	Remove local vars_to_rename.  Use new argument instead.
	* tree-optimize.c (optimize_function_tree): Re-write optimization
	ordering to support passes that need the SSA form updated.
	Call tree_ssa_dominator_optimize.
	Re-arrange optimization ordering.
	* tree-ssa-ccp.c (substitute_and_fold): Take new argument
	vars_to_rename.
	Call mark_new_vars_to_rename.
	(visit_phi_node): Move variable 'val' into the right scope.
	(initialize): Move call dump_begin ...
	(tree_ssa_ccp): ... here.
	* tree-ssa-dom.c (mark_new_vars_to_rename): Declare extern.
	Make sure that variables in virtual operands aren't marked
	unnecessarily.
	* tree-ssa.c (rewrite_into_ssa): Do not call
	tree_ssa_dominator_optimize.

2003-09-21  Diego Novillo  <dnovillo@redhat.com>

	* tree-ssa-dce.c (dom_info): Remove unused variable.
	* tree-ssa-dom.c (tree_ssa_dominator_optimize): If the CFG has been
	altered, call cleanup_tree_cfg.
	Call cleanup_tree_cfg before returning.
	* tree-ssa-pre.c (tree_perform_ssapre): Call get_stmt_operands
	before processing the statement.
	* tree-ssa-dom.c (thread_edge): Remove attribute EDGE_FALLTHRU from
	edge.

2003-09-21  Jeff Law  <law@redhat.com>

	* tree-ssa-dom.c (simplify_rhs_and_lookup_avail_expr): Break out of
	optimize_stmt.  Follow the def-use chains back for certain expressions
	to see if we can simplify the RHS of the current expression based
	on earlier expressions.

	* tree-ssa-dom.c (optimize_block): Rework code to propagate values
	into PHI nodes to be more efficient.

2003-09-20  Andrew MacLeod  <amacleod@redhat.com>

	* tree-flow.h (struct dataflow_d): Remove reaching fields, add 2 element
	vector of trees.
	* tree-flow-inline.h (immediate_uses): Rename to get_immediate_uses,
	return a dataflow object.
	(reaching_defs): Remove until needed.
	(num_immediate_uses): New. Return number of immediate uses.
	(immediate_use): New. Return a specified immediate use.
	* tree-dfa.c (add_immediate_use): Use new fields.
	(dump_immediate_uses_for): Use new interface.
	(create_phi_node): Chain to start of list.
	* tree-ssa-ccp.c (add_var_to_ssa_edges_worklist): Use new interface.
	* tree-ssa.c (compute_global_livein): Loop interchange.

2003-09-18  Jeff Law  <law@redhat.com>

	* tree-ssa-dom.c (optimize_stmt): Allow optimizing the RHS of a
	MODIFY_EXPR even if we can't record any equivalences created by
	the MODIFY_EXPR.  Move code to simplify ABS_EXPR, TRUNC_DIV_EXPR
	and TRUNC_MOD_EXPR to an earlier position.

2003-09-19  Andrew MacLeod  <amacleod@redhat.com>

	* tree-ssa-ccp.c (cfg_edges): Rename to cfg_blocks.
	(cfg_blocks_num, cfg_blocks_head, cfg_blocks_tail): New. Queue markers.
	(bb_in_list): New. Vector indicating if a BB is in the cfg_blocks list.
	(tree_ssa_ccp): Use new routines.
	(add_control_edge): Add to cfg_blocks list.
	(initialize): Initialize new variables.
	(finalize): Free allocations.
	(cfg_blocks_empty): New. Is cfg_blocks queue list.
	(cfg_blocks_add): New. Add a basic block to cfg_blocks list.
	(cfg_blocks_pop): New. Get a basic_block from the list.

2003-09-18  Richard Henderson  <rth@redhat.com>

	* tree-cfg.c (struct rusv_data): Add may_throw, may_branch.
	(remove_useless_stmts_and_vars_1): Set them.
	(remove_useless_stmts_and_vars_goto): Likewise.
	(remove_useless_stmts_and_vars_tf): Transform to compound_expr
	if only fallthrough.
	(remove_useless_stmts_and_vars_tc): Kill region if nothrow.
	Detect catch regions that don't propagate exceptions.
	(remove_useless_stmts_and_vars): Zero entire data struct.

2003-09-18  Richard Henderson  <rth@redhat.com>

	* tree-eh.c (lower_try_finally_dup_block): New.
	(honor_protect_cleanup_actions, lower_try_finally_copy): Use it.

2003-09-18  Richard Henderson  <rth@redhat.com>

	* tree-cfg (remove_useless_stmts_and_vars_cond,
	remove_useless_stmts_and_vars_tf,
	remove_useless_stmts_and_vars_tc,
	remove_useless_stmts_and_vars_bind,
	remove_useless_stmts_and_vars_goto): Break out of ...
	(remove_useless_stmts_and_vars_1): ... here.  Rename to _1;
	take and use struct rusv_data.
	(remove_useless_stmts_and_vars): New.  Loop until no change.
	* tree-flow.h (remove_useless_stmts_and_vars): Update decl.
	* tree-ssa.c (rewrite_out_of_ssa): Don't loop here.

2003-09-18  Richard Henderson  <rth@redhat.com>

	* tree-pretty-print.c (dump_generic_node): Don't double indent asms.

2003-09-18  Richard Henderson  <rth@redhat.com>

	* tree-eh.c: Include langhooks.h, remove errors.h.
	(decide_copy_try_finally): Use estimate_num_insns to choose
	between copy and switch implementations.

	* c-common.c (c_estimate_num_insns): Take an expr, not a decl.
	* tree-inline.c (limits_allow_inlining): Pass it the body of the decl.

2003-09-18  Jeff Law  <law@redhat.com>

	* tree-ssa-dom.c (lookup_avail_expr): New argument which indicates
	if the expression should be entered into the hash table.  All
	callers updated.
	(update_rhs_and_lookup_avail_expr): New function factored out
	of optimize_stmt.

	* tree.h (commutative_tree_code, associative_tree_code): Declare
	* tree.c (commutative_tree_code, associative_tree_code): New
	functions.
	(iterative_hash_expr): Use commutative_tree_code.
	* fold-const.c (operand_equal_p): Use commutative_tree_code
	rather than inlining the communitivy check.
	(fold, nondestructive_fold_binary_to_constant): Similarly.

2003-09-18  Diego Novillo  <dnovillo@redhat.com>

	* Makefile.in (tree-eh.o): Add dependency on errors.h
	* tree-eh.c: Include errors.h

2003-09-17  Richard Henderson  <rth@redhat.com>

	* tree-cfg.c (remove_useless_stmts_and_vars): Revert last change.
	* tree-flow.h, tree-ssa.c: Likewise.

2003-09-17  Richard Henderson  <rth@redhat.com>

	* tree-eh.c (decide_copy_try_finally): Remove forgotten debug code.

2003-09-17  Daniel Berlin  <dberlin@dberlin.org>

	* tree-ssa-pre.c (pick_ssa_name): New function.
	(code_motion): Use it.

2003-09-17  Richard Henderson  <rth@redhat.com>

	* tree-eh.c: New file.
	* Makefile.in (OBJS-common): Add it.
	(tree-eh.o): New.
	* calls.c (emit_call_1): New argument for full call expr.
	Check with lookup_stmt_eh_region to set REG_EH_REGION.
	(expand_call): Likewise for tail-calls.
	* except.c (struct eh_region): Add tree_label.
	(gen_eh_region, gen_eh_region_cleanup, gen_eh_region_try,
	gen_eh_region_catch, gen_eh_region_allowed,
	gen_eh_region_must_not_throw, get_eh_region_number,
	get_eh_region_may_contain_throw, get_eh_region_tree_label,
	set_eh_region_tree_label, expand_resx_expr): New.
	(expand_eh_region_start, expand_start_catch): Use them.
	(expand_end_catch): Tidy.
	(note_eh_region_may_contain_throw): Take region argument.
	(note_current_region_may_contain_throw): New.
	(get_exception_filter): Export.
	(collect_eh_region_array): Export.
	(remove_unreachable_regions): Check ERT_TRY based on reachability
	of catches, not reachability of continue_label.  Never remove
	ERT_MUST_NOT_THROW regions.
	(collect_rtl_labels_from_trees): New.
	(convert_from_eh_region_ranges): Use it.
	(connect_post_landing_pads): Handle dying cleanups.
	(struct reachable_info): Add callback data.
	(add_reachable_handler): Invoke the callback.
	(foreach_reachable_handler): New.
	(reachable_handlers): Use it.
	(arh_to_landing_pad, arh_to_label): New.
	(can_throw_internal_1): Split out from can_throw_internal.
	(can_throw_external_1): Similarly.
	* except.h: Update.
	* expr.c (expand_expr): Handle RESX_EXPR, FILTER_EXPR.
	* gimplify.c (gimplify_modify_expr): Use tree_could_trap_p.
	* stmt.c (using_eh_for_cleanups_p): Export.
	(expand_return): Allow any typed rhs.
	* timevar.def (TV_TREE_EH): New.
	* tree-cfg.c (eh_stack): Kill.
	(build_tree_cfg): Don't set it.  Kill code to handle EH.
	(could_trap_p): Move to tree-eh.c as tree_could_trap_p.
	(get_eh_region_type, make_try_expr_blocks, make_catch_expr_blocks,
	make_eh_filter_expr_blocks, try_finallys): Kill.
	(make_edges): Kill code to handle EH.
	(make_ctrl_stmt_edges): Kill TRY_FINALLY_EXPR, CATCH_EXPR,
	EH_FILTER_EXPR.  Handle RESX_EXPR.
	(make_call_expr_edges): Kill.
	(make_exit_edges): Use make_eh_edges.
	(label_to_block): New.
	(make_goto_expr_edges): Use it.
	(is_ctrl_stmt): Add RESX_EXPR.
	(is_ctrl_altering_stmt): Restructure.  Use tree_can_throw_internal.
	(last_exec_block, compute_reachable_eh): Kill.
	* tree-dfa.c (get_stmt_operands): Add RESX_EXPR.
	(get_expr_operands): Add FILTER_EXPR.
	* tree-dump.c (dump_files): Add tree-eh.
	* tree-flow.h (struct stmt_ann_d): Kill reachable_exception_handlers.
	(label_to_block, lower_eh_constructs, make_eh_edges,
	tree_could_trap_p, tree_could_throw_p, tree_can_throw_internal,
	tree_can_throw_external): Declare.
	* tree-optimize.c (optimize_function_tree): Call lower_eh_constructs.
	(tree_rest_of_compilation): Save tree for inlining.
	* tree-pretty-print.c (dump_generic_node): Handle FILTER_EXPR,
	RESX_EXPR.
	* tree-simple.c (is_gimple_stmt): Add RESX_EXPR.
	(is_gimple_val): Add FILTER_EXPR.
	* tree-ssa-dce.c (stmt_useful_p): Restructure.  Add lhs of
	EXC_PTR_EXPR or FILTER_EXPR.
	* tree.def (FILTER_EXPR, RESX_EXPR): New.
	* tree.h (enum tree_dump_index): Add TDI_eh.

2003-09-17  Richard Henderson  <rth@redhat.com>

	* tree.c (tsi_link_before): Remove unnecessary parens.
	(tsi_link_chain_before, tsi_delink): Likewise.
	(tsi_link_after): Accept the case if the iterator points
	to a NULL node; treat it as an empty list.
	(tsi_link_chain_after): Likewise.  Update iterator properly
	for TSI_CHAIN_END.

2003-09-17  Richard Henderson  <rth@redhat.com>

	* tree-inline.c (debug_find_tree_1, debug_find_tree): New.

2003-09-17  Richard Henderson  <rth@redhat.com>

	* tree-cfg.c (struct rusv_data): New.
	(remove_useless_stmts_and_vars_1): Rename from
	remove_useless_stmts_and_vars.  Use rusv_data.  Handle goto-next
	via remembering the last goto seen, and zapping it when appropriate.
	(remove_useless_stmts_and_vars): New.  Loop until done.
	* tree-flow.h (remove_useless_stmts_and_vars): Update decl.
	* tree-optimize.c (optimize_function_tree): Don't cache fnbody.
	Dump data after remove_useless_stmts_and_vars.
	* tree-ssa.c (rewrite_out_of_ssa): Kill loop around
	remove_useless_stmts_and_vars.
	* tree-dump.c (dump_files): Add .useless.
	* tree.h (enum tree_dump_index): Add TDI_useless.

2003-09-17  Diego Novillo  <dnovillo@redhat.com>

	* pretty-print.c (pp_write_text_to_stream): Export.
	* pretty-print.h (pp_write_text_to_stream): Declare.
	* tree-pretty-print.c (print_generic_stmt): Flush to file.
	(dump_generic_node): Call pp_write_text_to_stream.
	(maybe_init_pretty_print): Take file argument; associate the
	stream with the buffer.

2003-09-17  Jeff Law  <law@redhat.com>

	* tree-ssa-ccp.c (ccp_fold): If the return value has the wrong
	type, try to convert it to the proper type rather than failing.

	* tree-ssa-dom.c (optimize_stmt): Note that the statement is
	modified, even if we just change the virtual operands.  If
	the statement was modified by const/copy propagation, then
	set may_have_exposed_new_symbols.

2003-09-17  Diego Novillo  <dnovillo@redhat.com>

	* tree-dfa.c (find_vars_r): Do not consider 'void *' pointers as
	dereferenced when scanning function call arguments.
	* tree-flow-inline.h (may_propagate_copy): Block propagation of
	pointers when they have different memory tags.
	* tree-ssa-copyprop.c (propagate_copy): When copy propagating
	pointers, abort if the two pointers don't have identical memory
	tags.

2003-09-16  Jeff Law  <law@redhat.com>

	* tree-ssa-ccp.c (visit_stmt): Do not set DONT_SIMULATE_AGAIN
	just because a statement as virtual definitions.
	(likely_value): A CALL_EXPR is assumed to return a VARYING
	result, regardless of its operands.

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

	* tree-simple.c (is_gimple_val): Allow addresses of all decls.
	(is_gimple_const): Allow addresses of all non-weak statics.
	* tree-ssa-ccp.c (fold_stmt): Return bool.
	* tree-flow.h: Adjust prototype.
	* tree-ssa-dom.c (optimize_stmt): If folding changed stuff, we
	need to recalculate the vops.

2003-09-13  Diego Novillo  <dnovillo@redhat.com>

	Fix PR optimization/12268
	* tree-dfa.c (add_referenced_var): Call-clobbered pointers may
	point to global memory.

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

	* c-common.c (c_apply_type_quals_to_decl): Unset TREE_READONLY for
	types with constructors.
	Remove superfluous references to TREE_TYPE (decl).

2003-09-13  Diego Novillo  <dnovillo@redhat.com>

	* opts.c (decode_options): Enable must-alias optimization by default.
	* tree-dfa.c (get_expr_operands): Always call add_stmt_operand when
	dealing with ADDR_EXPR nodes.
	(add_stmt_operand): If the variable has an alias set
	of size zero, abort.
	Call get_base_symbol() to retrieve the variable from an ADDR_EXPR
	node.
	(compute_alias_sets): Deep copy the aliases array when triggering
	the alias grouping heuristic.
	Don't group aliases if -ftree-must-alias is given.
	* tree-must-alias.c (tree_compute_must_alias): Call
	dump_referenced_vars when doing detailed dumps.
	Rename promoted_vars to vars_to_rename.  Update all users.
	(find_addressable_vars): Always mark statements modified.
	(promote_var): Also mark aliases of promoted variable to be
	renamed.
	Call find_variable_in and remove_element_from to update varrays for
	call-clobbered variables and alias sets.
	(find_variable_in): New local function.
	(remove_element_from): New local function.
	* varray.c (varray_copy): New function.
	* varray.h (varray_copy): Declare.

2003-09-13  Diego Novillo  <dnovillo@redhat.com>

	* tree-flow-inline.h (is_optimizable_addr_expr): Remove.  Update
	all users.
	* tree-ssa-dom.c (optimize_stmt): Do not propagate SSA names from
	redundant expressions across abnormal edges.

2003-09-13  Zdenek Dvorak  <rakdver@atrey.karlin.mff.cuni.cz>

	* tree-cfg.c (remove_unreachable_blocks): Clean up.
	(debug_tree_bb_n): New.
	(is_ctrl_structure): Remove LOOP_EXPR.
	* tree-flow.h (debug_tree_bb_n): Declare.

2003-09-12  Andrew Macleod  <amacleod@redhat.com>

	* tree-ssa-live.c (calculate_live_on_entry): Use default_def to add
	addition checks to live on entry calculations.
	* tree-ssa.c (print_exprs_edge): New debug output function.
	(coalesce_abnormal_edges): Add basic block information to output.
	(coalesce_ssa_name): Use default_def instead of trying to compute live
	on entry variables.

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

	* tree-optimize.c (tree_rest_of_compilation): Set TREE_ASM_WRITTEN
	for functions that have errors.

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

	* tree-ssa-pre.c (graph_dump_file, graph_dump_flags): Remove
	unused variables.

2003-09-11  Daniel Berlin  <dberlin@dberlin.org>

	* tree-ssa-pre.c (reset_down_safe): Make test less conservative.
	(cba_search_start_from): Start from abnormal edge arguments, too.
	(cba_search_continue_from_to): Ditto here.

2003-09-11  Daniel Berlin  <dberlin@dberlin.org>

	* tree-ssa-pre.c: s/#if ENABLE_CHECKING/#ifdef ENABLE_CHECKING/g.
	Add more comments to DFS searching functions.
	(cba_search_reach_from_to): Remove empty function.
	(code_motion): Remove #if 0'd code.
	(pre_expression): Ditto.
	* tree.h (tree_dump_index): Remove TDI_predot.
	* tree-dump.c (dump_files): Ditto.

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

	Make EDGE_FALLTHRU meaningful for tree-cfg.
	* tree-cfg.c (make_edges): Set EDGE_FALLTHRU on fallthrough edge.
	(make_exit_edges): Likewise.
	(make_ctrl_stmt_edges): Don't set EDGE_FALLTHRU on edges into a
	control structure.
	(handle_switch_fallthru): Clear EDGE_FALLTHRU after inserting a goto.
	(find_insert_location): Only insert after a CALL_EXPR or MODIFY_EXPR.
	(bsi_insert_on_edge_immediate): Count outgoing abnormal edges.
	Insert before all control stmts.
	(bsi_link_after): Handle a block with nops after the last stmt.

	Rename some things to clarify difference between "control structures"
	(i.e. COND_EXPR) and "control statements" (also GOTO_EXPR).
	* basic-block.h (BB_CONTROL_STRUCTURE): Rename from BB_CONTROL_EXPR.
	* tree-cfg.c (REMOVE_NON_CONTROL_STRUCTS): Rename from
	REMOVE_NON_CONTROL_STMTS.
	(REMOVE_CONTROL_STRUCTS): Rename from REMOVE_CONTROL_STMTS.
	(make_ctrl_stmt_edges): Move GOTO_EXPR/RETURN_EXPR handling here...
	(make_exit_edges): ...from here.
	(is_ctrl_altering_stmt): Don't accept GOTO_EXPR/RETURN_EXPR.
	(is_ctrl_structure): Renamed from old is_ctrl_stmt.
	(is_ctrl_stmt): New fn.
	(bsi_move_to_bb_end): Use it.
	(stmt_starts_bb_p): Use is_ctrl_stmt and is_ctrl_altering_stmt.
	* tree-flow.h: Add prototype.
	* tree-ssa-ccp.c, tree-ssa-dom.c: Update for name changes.

2003-09-10  Daniel Berlin  <dberlin@dberlin.org>

	* tree-ssa-pre.c (ephi_has_bottom): Remove dead function.
	(ephi_has_unsafe_arg): New function.
	(compute_down_safety): Use it.
	(reset_down_safe): Continue search on abnormal edges, too.

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

	* gimplify.c (gimplify_asm_expr): Add post_p parm.
	(get_initialized_tmp_var): Add post_p parm.
	(internal_get_tmp_var): Likewise.
	(gimplify_expr, get_formal_tmp_var): Pass it.
	* c-simplify.c (gimplify_decl_stmt): Pass it.
	* tree-simple.h: Adjust prototype.

	* tree-cfg.c (make_call_expr_edges): Break out from...
	(make_exit_edges): ...here.  Check TREE_NOTHROW.
	(is_ctrl_altering_stmt): Check TREE_NOTHROW.

2003-09-10  Paul Brook  <paul@nowt.org>

	* gimplify.c (gimplify_compound_lval): Treat REALPART_EXPR and
	IMAGPART_EXPR the same as COMPONENT_REF.
	* tree-simple.c (is_gimple_addr_expr_arg): Ditto.
	(is_gimple_lvalue): Remove REALPART_EXPR and IMAGPART_EXPR.

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

	* c-pretty-print.c (decl_name_str): New local function.
	(pp_c_direct_declarator): Call it.
	(pp_c_primary_expression): Call it.
	(pp_c_id_expression): Call it.
	(pp_c_statement): Call it.

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

	* tree-pretty-print.c (dump_generic_node): Change string used to
	display _DECL nodes with no DECL_NAME.

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

	* tree-dfa.c (add_referenced_var): Handle cases when argument
	walk_state is NULL.
	(add_referenced_tmp_var): New function.
	* tree-flow.h (add_referenced_tmp_var): Declare it.
	* tree-ssa-pre.c (pre_expression): Call it.
	* tree-ssa-live.c (create_ssa_var_map): Add checking for variables
	being in real and virtual operands.

2003-09-01  Zdenek Dvorak  <rakdver@atrey.karlin.mff.cuni.cz>
	    Jeff Law  <law@redhat.com>

	* tree-flow.h (remove_unreachable_blocks): Declare.
	* tree-cfg.c (remove_unreachable_blocks): Export. Return true
	if blocks were removed.
	* tree-ssa-dom.c (optimize_block, optimize_stmt): Record whether
	the cfg has changed.  Schedule jump threading.  If a block
	has more than one pred, then do not record equivalences created
	by a controlling COND_EXPR.
	(edges_to_redirect, redirection_targets): New variables.
	(thread_edge): Split out of optimize_block.
	(tree_ssa_dominator_optimize); Remove unreachable blocks and
	recompute dominator tree when the cfg changes.

2003-09-07  Steven Bosscher  <steven@gcc.gnu.org>

	* c-tree.h: Don't declare c_genericize, it's already
	declared in c-common.h.

2003-09-07  Steven Bosscher  <steven@gcc.gnu.org>

	Fix PR optimization/12198
	* tree-cfg.c (value_matches_some_label): Handle integer
	case ranges.

2003-09-06  Zdenek Dvorak  <rakdver@atrey.karlin.mff.cuni.cz>

	* tree-iterator.h (tsi_iterator_update): Added TSI_CHAIN_START,
	TSI_CHAIN_END, TSI_CONTINUE_LINKING and comments.
	(tsi_link_chain_before, tsi_link_chain_after): Declare.
	* tree.c (tsi_link_chain_before, tsi_link_chain_after): New.
	(tsi_link_before, tsi_link_after): Handle new TSI_...
	positions.

2003-09-06  Diego Novillo  <dnovillo@redhat.com>

	* varray.c (element): Add entry for 'tree *'.
	* varray.h (enum varray_data_enum): Add VARRAY_DATA_TREE_PTR.
	(union varray_data_tag): Add entry for 'tree *'.
	(VARRAY_TREE_PTR_INIT): Define.
	(VARRAY_TREE_PTR): Define.
	(VARRAY_PUSH_TREE_PTR): Define.
	(VARRAY_TOP_TREE_PTR): Define.
	* tree-cfg.c: Replace uses of VARRAY_GENERIC_PTR with
	VARRAY_TREE_PTR when accessing operand arrays.
	* tree-ssa-ccp.c: Likewise.
	* tree-ssa-copyprop.c: Likewise.
	* tree-ssa-dce.c: Likewise.
	* tree-ssa-dom.c: Likewise.
	* tree-ssa-live.c: Likewise.
	* tree-ssa-pre.c: Likewise.
	* tree-dfa.c: Likewise.
	* tree-ssa.c: Likewise.
	* tree-flow.h (struct operands_d): Remove 'skip' GC markers from
	all fields.
	(struct dataflow_d): Likewise.

2003-09-05  Diego Novillo  <dnovillo@redhat.com>

	* tree-dfa.c (find_referenced_vars): Re-enable .GLOBAL_VAR
	optimization.

2003-09-05  Daniel Berlin  <dberlin@dberlin.org>

	* tree.h (tree_eref_common): Make stmt a tree, not a tree *.
	* tree-ssa-pre.c: Transform all tree *'s to tree.

2003-09-05  Paul Brook  <paul@nowt.org>

	* tree.h (enum tree_index): Delete TI_SIGNED_SIZE_TYPE here.
	(signed_size_type_node): No longer a member of global_trees.
	* c-common.h (enum c_tree_index): New member CTI_SIGNED_SIZE_TYPE.
	(signed_size_type_node): Moved, now a member of c_global_trees.

2003-09-05  Diego Novillo  <dnovillo@redhat.com>

	* tree-dfa.c (find_referenced_vars): Temporarily disable
	.GLOBAL_VAR optimization.

2003-09-04  Daniel Berlin  <dberlin@dberlin.org>

	* tree-alias-common.c:  Add overview.
	* tree-alias-ander.c: Add overview and more specific comments on what
	each function does.

2003-09-04  Diego Novillo  <dnovillo@redhat.com>

	* tree-optimize.c (tree_rest_of_compilation): Return if errorcount
	or sorrycount are non-zero.

2003-09-04  Diego Novillo  <dnovillo@redhat.com>

	* tree-cfg.c (cleanup_tree_cfg): Traverse basic blocks
	with FOR_EACH_BB.
	(remove_useless_stmts_and_vars): Likewise.
	* tree-ssa-dom.c (tree_ssa_dominator_optimize): Likewise.
	* tree-ssa.c (rewrite_into_ssa): Likewise.
	* tree-dfa.c (remove_all_phi_nodes_for): Make sure that the new
	list of PHI nodes is NULL-terminated.
	Add sanity checks to make sure all the PHI nodes for variables to
	rename are gone.

2003-09-04  Diego Novillo  <dnovillo@redhat.com>

	* tree-dfa.c (struct walk_state): Add field 'num_calls'.
	(add_call_clobber_ops): New local function.
	(add_call_read_ops): New local function.
	(get_expr_operands): Call them.
	(add_stmt_operand): Call-clobbered variables are always added to
	virtual operands.
	(find_referenced_vars): If the number of call-clobbered variables
	and number of call sites is larger than a certain threshold, group
	all call-clobbered variables under .GLOBAL_VAR.
	(find_vars_r): Count the number of call sites.
	Don't add .GLOBAL_VAR to the list of referenced variables.
	(add_referenced_var): If the addressable variable is an array,
	register alias set of the type of the elements, not the type of the
	array.
	* tree-ssa-dom.c (mark_new_vars_to_rename): Rename from
	find_new_vars_to_rename.  Update all users.
	Before scanning the statement for new operands, mark the existing
	virtual operands to be renamed again.
	(optimize_stmt): Also check for newly exposed variables when doing
	redundancy elimination.
	* tree-ssa.c (rewrite_into_ssa): Don't abort when rename_count is
	greater than 2.  Simply stop trying at 3.
	(prepare_operand_for_rename): New function.
	(mark_def_sites): Call it.
	(rewrite_stmt): Don't check if the operand is an SSA_NAME before
	calling rewrite_operand.
	(rewrite_operand): Don't abort if the operand was already an
	SSA_NAME.  Ignore it.

2003-09-03  Richard Henderson  <rth@redhat.com>

	* tree-optimize.c (set_save_expr_context, clear_decl_rtl,
	tree_rest_of_compilation): Merge from mainline new file.
	* Makefile.in (tree-optimize.o): Update.
	* c-semantics.c (expand_stmt_toplev): New.
	* c-common.h (expand_stmt_toplev): Declare.
	* c-lang.c, objc/objc-lang.c (LANG_HOOKS_RTL_EXPAND_STMT): Use it.

2003-09-03  Richard Henderson  <rth@redhat.com>

	* gimplify.c (gimplify_switch_expr): Leave the outermost cast
	as part of the switch condition.

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

	* Makefile.in (tree.o): Add dependency on $(BASIC_BLOCK_H) and
	$(TREE_FLOW_H)
	* tree.c: Include basic-block.h and tree-flow.h
	(tsi_link_after): Adjust basic block tree pointers when inserting a
	new COMPOUND_EXPR.

2003-09-02  Richard Henderson  <rth@redhat.com>

	* c-decl.c (finish_function): Fix misapplied patch.  Don't
	free_after_parsing or free_after_compilation.  For real this time.

2003-09-01  Daniel Berlin  <dberlin@dberlin.org>

	* tree-ssa-pre.c (finalize_1):  Remove unnecessary call to
	insert_euse_in_preorder_dt_order.
	(code_motion): Ditto.
	(pre_expression): Ditto.

2003-09-01  Zdenek Dvorak  <rakdver@atrey.karlin.mff.cuni.cz>
	    Jeff Law  <law@redhat.com>

	* basic-block.h (BB_LOOP_CONTROL_EXPR): Remove.
	* c-simplify.c (gimplify_c_loop): Create loops in a better shape.
	* cfgloop.h (create_loop_notes): Declare.
	* cfgloopmanip.c (create_loop_notes): New.
	* explow.c (probe_stack_range): Don't produce loop notes when we
	recreate them.
	* expr.c (emit_block_move_via_loop): Ditto.
	* gimplify.c (build_and_jump): Export.
	(gimplify_loop_expr): Don't produce LOOP_EXPRs.
	* toplev.c (rest_of_compilation): Recreate loop notes if needed.
	* tree-cfg.c (make_loop_expr_edges, make_loop_expr_blocks): Removed.
	(find_contained_blocks, make_ctrl_stmt_edges,
	remove_useless_stmts_and_vars, stmt_ends_bb_p, bsi_insert_before,
	find_insert_location, bsi_insert_on_edge_immediate,
	merge_tree_blocks): Remove handling of LOOP_EXPRs.
	(remove_stmt): Remove handling of BB_LOOP_CONTROL_EXPR.
	(find_taken_edge): Remove comment on LOOP_EXPRs.
	(dump_tree_bb): Don't dump loop-related information.
	(is_loop_stmt, is_latch_block_for): Removed.
	(find_insert_location): Handle TRY_CATCH and TRY_FINALLY.
	* tree-flow.h (is_loop_stmt, loop_body, set_loop_body,
	is_latch_block_for): Removed.
	* tree-dfa.c (get_stmt_operands): Don't handle LOOP_EXPRs.
	* tree-simple.c (is_gimple_stmt): Remove handling of LOOP_EXPRs.
	* tree-simple.h: Remove LOOP_EXPRs from gimple grammar comment.
	(build_and_jump): Declare.
	* tree-ssa.c (remove_annotations_r): Don't handle LOOP_EXPRs.

2003-08-29  Daniel Berlin  <dberlin@dberlin.org>

	* opts.c (decode_options): Turn on SSAPRE by default.

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

	* builtins.c (simplify_builtin): Make sure that the replacement
	has the same type as the original expression.
	(simplify_builtin_strpbrk): Fix type of COMPOUND_EXPR.
	(simplify_builtin_strncpy, simplify_builtin_memcmp): Likewise.
	(simplify_builtin_strncmp, simplify_builtin_strncat): Likewise.
	(simplify_builtin_strspn, simplify_builtin_strcspn): Likewise.
	(simplify_builtin_fputs, simplify_builtin_sprintf): Likewise.

2003-08-28  Zdenek Dvorak  <rakdver@atrey.karlin.mff.cuni.cz>

	* builtins.c (expand_builtin): Expand BUILT_IN_STACK_SAVE and
	BUILT_IN_STACK_RESTORE.
	* builtins.def (BUILT_IN_STACK_SAVE, BUILT_IN_STACK_RESTORE): New.
	* gimplify.c (build_stack_save_restore): New functions.
	(struct gimplify_ctx): New field save_stack.
	(gimplify_bind_expr, gimplify_call_expr): Arrange save of stack on
	BIND_EXPR entry and restore on exits.
	* stmt.c (expand_stack_alloc): Saving of stack removed.
	(expand_stack_save, expand_stack_restore): New.
	* tree.h (expand_stack_save, expand_stack_restore): Declare.

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

	* tree-dfa.c (add_vdef): Check for duplicate voperands first.
	Handle SSA_NAME in voperands.
	(add_vuse): Likewise.

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

	* tree-flow.h (var_ann_d): Convert is_in_va_arg_expr into a
	bitfield.

2003-08-27  Daniel Berlin  <dberlin@dberlin.org>

	* tree-ssa-pre.c: Update comments to reflect reality.
	(insert_one_operand): Remove #if'0d code.

2003-08-27  Zdenek Dvorak  <rakdver@atrey.karlin.mff.cuni.cz>

	* gcov.c (typedef struct arc_info): New field cs_count.
	(accumulate_line_counts): Find cycles correctly.

2003-08-27  Daniel Berlin  <dberlin@dberlin.org>

	* tree-ssa-pre.c (compute_du_info): Move #if ENABLE_CHECKING up one
	line.

2003-08-27  Daniel Berlin  <dberlin@dberlin.org>

	* tree.h (struct ephi_arg_d): New structure.
	(struct eref_common): Remove non-used members, move some members
	elsewhere.
	(struct ephi_node): Ditto.

	* tree-optimize.c (optimize_function_tree): Move PRE before DCE.

	* tree.c (tree_size): use sizeof (struct ephi_arg_d) for ephi's.

	* tree-pretty-print.c (dump_generic_node): Re-teach to pretty
	print euses/ephis/etc given new structures, members, and
	relationships.

	* tree-ssa-pre.c (fixup_domchildren): Removed.
	(a_dom_b): Ditto.
	(calculate_preorder): Ditto.
	(defs_match_p): Ditto.
	(defs_y_dom_x): Ditto.
	(compute_can_be_avail): Ditto.
	(reset_can_be_avail): Ditto.
	(reset_later): Ditto.
	(compute_later): Ditto.
	(repair_*): Ditto.
	(set_replacement): Ditto.
	(remove_ephi): Ditto.
	(set_expruse_def): Ditto.
	(occ_compare): Ditto.
	(defs_hash_expr): Ditto.
	(compute_dt_preorder): Ditto
	(search_dt_preorder): Ditto.
	(ephi_operand_for_pred): Ditto.
	(injured_ephi_operand): Ditto.
	(compute_stops): New function.
	(occ_identical_to): Ditto.
	(require_phi): Ditto.
	(do_ephi_df_search_1): Ditto.
	(do_ephi_df_search): Ditto.
	(any_operand_injured): Ditto.
	(compute_du_info): Ditto.
	(add_ephi_use): Ditto.
	(insert_one_operand): Ditto.
	(add_ephi_pred): Ditto.
	(created_phi_preds): New bitmap.
	(dfn) Removed static variable.
	(idom_of_ephi): Ditto.
	(avdefs): Move into expr_info).
	(struct ephi_use_entry): New structure for EPHI uses.
	(struct ephi_df_search): New structure for depth first searchs.
	(cant_be_avail_search): Implementation of structure for
	cant_be_avail search.
	(stops_search): Ditto for stops.
	(replacing_search): Ditto for replacing_search.
	(do_proper_save): Arguments changed, callers updated.
	(create_ephi_node): Use sizeof (struct ephi_arg_d).
	(ephi_has_bottom): Rewrite for updated ephi-pred handling.
	(ephi_will_be_avail): Rewrite in terms of CANT_BE_AVAIL and STOPS.
	(expr_phi_insertion): Remove dead code.
	Update for new flags.
	(insert_occ_in_preorder_dt_order_1): Only insert one ephi-pred per
	block.
	Fix exit occurence handling.
	(rename_1): Remove occs stuff.
	Update for new ephi-pred handling.
	(reset_down_safe): Update for new ephi-pred handling.
	(compute_down_safe): Ditto.
	(can_insert): Ditto.
	(insert_one_operand): Split out from finalize_1.
	(finalize_1): Update for new ephi-pred handling.
	Only insert non-pointless, will-be-avail phis, rather than *all*
	ephis.
	(get_temp): New function. Hand us the right temporary for a given
	EPHI/EUSE.
	(code_motion): Use EREF_TEMP again, now that we can do it
	properly.

2003-08-26  Zdenek Dvorak  <rakdver@atrey.karlin.mff.cuni.cz>

	* builtins.c (expand_builtin): Handle STACK_ALLOC.
	* builtins.def (BUILT_IN_STACK_ALLOC): New.
	* c-simplify.c (gimplify_decl_stmt, c_gimplify_stmt,
	gimplify_compound_literal_expr): Arrange explicit stack allocation.
	* expr.c (expand_expr): Handle deferred variables.
	* stmt.c (expand_stack_alloc): New.
	* tree-simple.c (is_gimple_val): Prevent ADDR_EXPRs of vla's from
	being reduced.
	* tree.h (expand_stack_alloc): Declare.

2003-08-26  Zdenek Dvorak  <rakdver@atrey.karlin.mff.cuni.cz>

	* tree-ssa.c (build_dominator_tree): Use FOR_EACH_BB.

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

	* tree-simple.c (is_gimple_val): Also disallow memory vars.

2003-08-25  Zdenek Dvorak  <rakdver@atrey.karlin.mff.cuni.cz>

	* integrate.c (copy_decl_for_inlining): Reset DECL_TOO_LATE.

2003-08-25  Zdenek Dvorak  <rakdver@atrey.karlin.mff.cuni.cz>

	* tree-ssa-dom.c (optimize_block): Handle empty source block.

	* tree-ssa-dom.c (optimize_block):  Handle case when dominance
	tree children have also other sucessors.  Add dump to jump
	threading.

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

	* c-simplify.c (mark_labels_r): New fn.
	(gimplify_decl_stmt): Use it to mark labels in static initializers.
	* tree-simple.c (is_gimple_initializer): Remove.
	(is_gimple_reg_type): New fn.
	(is_gimple_reg): Use it.  Handle SSA_NAMEs properly.
	* tree-simple.h: Adjust.
	* gimplify.c (gimplify_expr) <CONSTRUCTOR>: Do nothing here.

	* gimplify.c (create_tmp_var): Set DECL_IGNORED_P.

	* tree-inline.c (initialize_inlined_parameters): Improve error
	recovery.

	* gimplify.c (gimplify_boolean_expr): Just replace with a COND_EXPR.

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

	* tree-dfa.c (get_expr_operands): Don't create shared operands when
	folding *&VAR expressions.

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

	* tree-flow.h (struct var_ann_d): Add field default_def.
	(widen_bitfield): Declare.
	(set_default_def): Declare.
	(default_def): Declare.
	* tree-flow-inline.h (set_default_def): New inline function.
	(default_def): New inline function.
	* tree-dfa.c (dump_variable): Display default_def, if set.
	* tree-simple.c (is_gimple_reg): Check for DECL_P before checking
	for DECL_EXTERNAL.
	* tree-ssa-dom.c (add_expr_propagated_p): Remove.  Update all
	users.
	(find_new_vars_to_rename): New local function.
	(tree_ssa_dominator_optimize): Add new argument vars_to_rename.
	Change return type to void.  Update all users.
	(optimize_block): Add new argument vars_to_rename.  Update all
	users.
	If the call to optimize_stmt returns true, add the statement to the
	list of statements to re-scan for operands.
	After optimizing the block and its dominator children, call
	find_new_vars_to_rename for every statement that may have had new
	symbols exposed.
	(optimize_stmt): Change return type to bool.  Return true if the
	statement may have had new symbols exposed by optimization.
	Add a sanity check for the value returned by lookup_avail_expr.
	Create equivalences for more memory stores, not just the ones done
	via INDIRECT_REF expressions.
	Call widen_bitfield when optimizing stores to bitfields.
	(lookup_avail_expr): Reformat comment.
	* tree-ssa.c (rewrite_into_ssa): Remove local variable
	addr_expr_propagated_p.
	Clear out vars_to_rename before running dominator optimizations.
	(check_for_new_variables): Remove.
	(rewrite_stmt): Always register new definitions and virtual
	definitions.
	(register_new_def): Update comment.
	(get_reaching_def): Update the default_def field for the variable
	if it didn't have a reaching definition.
	* tree-ssa-ccp.c (widen_bitfield): Declare it extern.

2003-08-23  Zdenek Dvorak  <rakdver@atrey.karlin.mff.cuni.cz>

	* tree-cfg.c (bsi_next_in_bb): Work correctly when the block ends
	with start of BIND_EXPR.

2003-08-23  Daniel Berlin  <dberlin@dberlin.org>

	* tree-alias-ander.c (andersen_op_assign): Fix to join the operands,
	the assign to the lhs.

2003-08-23  Daniel Berlin  <dberlin@dberlin.org>

	* tree-alias-common.c (get_alias_var): Remove REFERENCE_EXPR.
	(find_func_aliases): Fix some not quite right predicates, add ARRAY_REF
	handling.

2003-08-22  Jeff Law  <law@redhat.com>

	* tree-dfa.c (compute_alias_sets): A memory tag used for stores can
	not conflict with objects marked TREE_READONLY.

	* tree-ssa-ccp.c (fold_stmt): Optimize reads from constant strings.

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

	* tree-simple.c: Total overhaul to only check forms and remove
	unnecessary predicates.
	(is_gimple_const): Accept function addresses here.
	Don't accept LABEL_DECL or RESULT_DECL.
	(is_gimple_val): Accept EXC_PTR_EXPR here.
	(is_gimple_lvalue): Rename from is_gimple_modify_expr_lhs.
	Accept BIT_FIELD_REF, REALPART_EXPR and IMAGPART_EXPR here.
	(is_gimple_addr_expr_arg): Replace with former is_gimple_varname.
	(is_gimple_constructor_elt): Just check for CONSTRUCTOR.
	(is_gimple_initializer): Just hand off to is_gimple_rhs.
	(is_gimple_rhs): Recognize most expressions here.
	(is_gimple_variable): New fn.
	(is_gimple_id): Use it.  Now static.
	(is_gimple_reg): New fn.
	(is_gimple_cast): Replace with former is_gimple_cast_op.
	(is_gimple_constructor, is_gimple_expr): Remove.
	(is_gimple_modify_expr, is_gimple_relop): Remove.
	(is_gimple_binary_expr, is_gimple_unary_expr): Remove.
	(is_gimple_call_expr, is_gimple_arglist): Remove.
	(is_gimple_compound_lval, is_gimple_arrayref): Remove.
	(is_gimple_compref, is_gimple_exprseq): Remove.
	(is_gimplifiable_builtin): Remove.
	* tree-simple.h: Adjust.
	* gimplify.c (gimplify_conversion): Break out from gimplify_expr.
	(gimplify_expr): Use is_gimple_reg predicate to force a temp.
	<COMPONENT_REF>: Use gimplify_compound_lval.
	<REALPART_EXPR, IMAGPART_EXPR>: Likewise.
	<INDIRECT_REF>: Use is_gimple_reg predicate.
	<MIN_EXPR, MAX_EXPR>: Use new gimplify_minimax_expr.
	<TREE_LIST>: Reject.
	(gimplify_tree_list, gimplify_component_ref): Remove.
	(gimplify_compound_lval): Include REALPART_EXPR and IMAGPART_EXPR.
	(gimplify_component_ref): Remove.
	(gimplify_call_expr): Handle non-gimplifiable builtins and walking
	the argument list here.
	(gimplify_tree_list): Remove.
	(gimplify_addr_expr): Use fb_either.
	* tree-simple.h: Adjust.
	* tree-alias-common.c (find_func_aliases): Update use of predicates.

2003-08-21  Andrew Pinski  <pinskia@physics.uc.edu>

	* tree-ssa.c (tree_ssa_useless_type_conversion): Check also the
	precision of the type to make sure they are really useless type
	conversions.

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

	* tree-dump.c (dequeue_and_dump): Handle 'r' and 's' code classes.

2003-08-21  Zdenek Dvorak  <rakdver@atrey.karlin.mff.cuni.cz>

	* c-pretty-print.c (print_c_tree): Create new pp object.

2003-08-21  Zdenek Dvorak  <rakdver@atrey.karlin.mff.cuni.cz>

	* tree-ssa-dom.c (tree_ssa_dominator_optimize): Don't free hash tables
	before statistics are made from them.
	* tree-ssa.c (rewrite_into_ssa): Ditto.

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

	* tree-inline.c (copy_body_r): Don't convert when stripping &*.
	Fix thinko in stripping *&.

2003-08-21  Diego Novillo  <dnovillo@redhat.com>
	    Zdenek Dvorak  <rakdver@atrey.karlin.mff.cuni.cz>

	* tree-cfg.c (stmt_starts_bb_p): Nonlocal and computed GOTO targets
	always start a new block.

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

	* tree-pretty-print.c (dump_generic_node): Just print "<retval>"
	for the RESULT_DECL.

	* c-simplify.c (make_type_writable, mostly_copy_tree_r): Remove.
	(deep_copy_list, deep_copy_node): Remove.

	* expr.c (expand_expr): Don't check for 'r' or 's' if we're
	checking IS_EXPR_CODE_CLASS.
	* tree-dfa.c (may_access_global_mem_p): Likewise.
	* tree-browser.c (browse_tree): Likewise.
	* tree-ssa-pre.c (defs_hash_expr): Likewise.
	* gimplify.c (gimplify_expr): Likewise.
	(internal_get_tmp_var): Only copy TREE_LOCUS from an expr.
	(mostly_copy_tree_r): Ignore decls here.

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

	* c-pretty-print.c: Discard.  Replace with same file from
	mainline.  Update all users.
	(print_c_tree): New function.
	* c-pretty-print.h (print_c_tree): Declare.
	* tree-pretty-print.c: Update to use new pp_* primitives.
	* c-simplify.c: Include c-pretty-print.h.
	* Makefile.in (c-simplify.o): Add dependency on $(C_PRETTY_PRINT_H).

2003-08-20  Roger Sayle  <roger@eyesopen.com>

	* c-common.h (enum c_tree_index): Delete CTI_SIGNED_SIZE_TYPE.
	(signed_size_type_node): No longer a member of c_global_trees.
	* tree.h (enum tree_index): New member TI_SIGNED_SIZE_TYPE here.
	(signed_size_type_node): Moved, now a member of global_trees.

2003-08-20  Zdenek Dvorak  <rakdver@atrey.karlin.mff.cuni.cz>

	* tree-ssa-dom.c (optimize_block): Thread jump into empty
	block correctly.

	* tree-cfg.c (linearize_cond_expr): Don't merge blocks if the
	later has other predecessors.

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

	* c-typeck.c (build_array_ref): Also build ARRAY_REFs from
	INDIRECT_REFs of ARRAY_TYPE.

	* tree-ssa.c (tree_ssa_useless_type_conversion): Also strip
	conversions between pointer and reference types.

	* tree-dfa.c (get_stmt_operands): Just mark non-GIMPLE statements
	as unmodified.
	(find_referenced_vars): So we don't need to mark them here.

	* tree-inline.c (inline_data): Add retvar field.
	(declare_return_variable): Set it.
	(remap_decls): Use it.
	(expand_call_inline): Tweak.

2003-08-19  Zdenek Dvorak  <rakdver@atrey.karlin.mff.cuni.cz>

	* cfg.c (dump_edge_info): Add name for EDGE_LOOP_EXIT flag.

2003-08-19  Zdenek Dvorak  <rakdver@atrey.karlin.mff.cuni.cz>

	* tree-flow.h (struct var_ann_d): New field scope.
	(struct stmt_ann_d): New field scope.
	(propagate_copy): Declaration changed.
	(fixup_var_scope): Declare.
	* tree-cfg.c (make_blocks, make_cond_expr_blocks,
	make_catch_expr_blocks, make_eh_filter_expr_blocks,
	make_try_expr_blocks, make_loop_expr_blocks, make_switch_expr_blocks,
	make_bind_expr_blocks, build_tree_cfg): Assign variables and statements
	to scopes.
	(assign_vars_to_scope): New.
	* tree-ssa-copyprop.c (move_var_to_scope): New.
	(copyprop_stmt): Pass scope of statement to propagate_copy.
	(propagate_copy): Assign variable to the right bind_expr.
	(fixup_var_scope): New.
	* tree-ssa-dom.c (optimize_stmt): Pass scope of statement to
	propagate_copy.

2003-08-19  Daniel Berlin <dberlin@dberlin.org>

	* tree-cfg (bsi_move_after): New function.
	(bsi_move_before): New function.
	(bsi_move_to_bb_end): New function.
	* tree-flow.h: Prototype new functions.

2003-08-18  Daniel Berlin  <dberlin@dberlin.org>

	* tree-alias-ander.c: Remove doxygen markers.
	(eq_to_var): remove.
	(simple_cmp): Add.
	(throwaway_global): Add.
	(andersen_same_points_to_set): Handle ignoring global var aliasing the
	right way here.
	(andersen_may_alias): Use list_member to avoid stupid hack.
	* tree-alias-common.c: Remove hacks for disabling global var aliasing.

2003-08-17  Zdenek Dvorak  <rakdver@atrey.karlin.mff.cuni.cz>

	* tree.c (resize_phi_node): Initialize new entries.

2003-08-17  Jeff Law  <law@redhat.com>

	* tree-pretty-print.c (last_bb): Actually record the basic block,
	not just its index.
	(maybe_init_pretty_print): Corresponding changes.
	(dump_generic_node, dump_vops): Test the actual block pointers, not
	their indices.

	* tree-ssa-dom.c (optimize_block): Use equivalences from the
	dominator tree walk to thread through conditional jumps at leafs in
	the dominator tree.

	* tree-cfg.c (blocks_unreachable_p, remove_blocks): Use a bitmap
	rather than a varray.
	(REMOVE_ALL_STMTS, REMOVE_NO_STMTS): New defines for remove_bb.
	(REMOVE_NON_CONTROL_STMTS, REMOVE_CONTROL_STMTS): Likewise.
	(remove_unreachable_block): Use find_contained_blocks rather
	than find_subblocks.  If we have a COND_EXPR or SWITCH_EXPR which
	is unreachable, but which has reachable children clear out the
	condition and request all non-control statements be removed
	from the block.
	(remove_bb): Allow better control over what (if any) statements
	are removed.  All callers updated.
	(find_subblocks): Remove.
	(find_contained_blocks): Handle statements with no associated
	basic block.

2003-08-15  Andrew Pinski <pinskia@physics.uc.edu>

	* objc/objc-lang.c (LANG_HOOKS_GIMPLIFY_EXPR): Define
	as the c gimplifier.

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

	* tree-cfg.c (cleanup_tree_cfg): Wipe out the dominator tree
	if the number of basic blocks changes as a result of cfg cleanups.
	* tree-flow.h (build_dominator_tree): Prototype.
	* tree-ssa-dom.c (tree_ssa_dominator_optimize): Build the dominator
	tree if it is not already available.
	* tree-ssa.c (build_dominator_tree): New function.
	(rewrite_into_ssa): Use it.

	* gimplify.c (gimplify_expr, cases NOP_EXPR, CONVERT_EXPR): If a
	COMPONENT_REF is wrapped with a NOP_EXPR, then force the type of
	the COMPONENT_REF to match the accessed field.  Strip away
	unnecessary type conversions and handle the case where all type
	conversions were removed.
	(case ARRAY_REF, COMPONENT_REF): Indicate to gimplify_array_ref
	and gimplify_component_ref if we want an lvalue or not.
	(gimplify_array_ref, gimplify_component_ref): Pass new argument
	WANT_LVALUE through to gimplify_compound_lval.
	(gimplify_compound_lval): If we do not want an lvalue and the
	toplevel COMPONENT_REF's type does not match its field's type,
	then wrap the COMPONENT_REF in a NOP_EXPR and force the
	COMPONENT_REF's type to match its field's type.
	(gimplify_modify_expr): If the RHS is a CALL_EXPR and the LHS
	is not a gimple temporary, then force the RHS through a gimple
	temporary, even if the call can not throw.
	(create_tmp_var): Make sure not to lose the type's attributes
	for the new variable.
	* tree-ssa.c (tree_ssa_useless_type_conversion): New function.
	* tree-flow.h (tree_ssa_useless_type_conversion): Prototype.
	* tree-ssa-dom.c (optimize_stmt): Use tree_ssa_useless_type_conversion.

	* tree-cfg.c (remove_useless_stmts_and_vars): Catch more
	useless statements created during the out-of-ssa pass.

2003-08-14  Jeff Law  <law@redhat.com>

	* tree-ssa-dom.c (optimize_block): Record equivalences created by
	SWITCH_EXPRs.

	* tree-ssa-dom.c (optimize_stmt): Allow optimizing the RHS of
	a RETURN_EXPR which contains an optimizable MODIFY_EXPR.
	(lookup_avail_expr): Corresponding changes.
	(avail_expr_hash, avail_expr_eq): Likewise.

	* tree-ssa-dom.c (optimize_stmt): Fix typo which prevented
	stores with more than one VDEF from creating useful equivalences.

	* tree-dfa.c (get_expr_operands): Do not special case *0;

	* fold-const.c (fold, case INDIRECT_REF): Revert last change.

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

	* tree-cfg.c (bsi_insert_on_edge_immediate): Only update the
	container for the head tree of the next block if the new statement
	needs to be linked to it.

2003-08-13  Jeff Law  <law@redhat.com>

	* fold-const.c (fold, case INDIRECT_REF): Optimize reads from
	constant strings.

	* tree-cfg.c (remove_useless_stmts_and_vars): For a COND_EXPR
	where the condition is a variable and the ELSE clause merely
	sets that variable to zero, remove the ELSE clause.

	* tree-ssa-dom.c (optimize_stmt): Do not check the type of the
	value returned by lookup_avail_expr.

2003-08-13  Daniel Berlin  <dberlin@dberlin.org>

	* tree-cfg.c (remove_stmt):  Add new argument saying whether to remove
	annotations and invalidate defs.  Update all callers
	(remove_bsi_from_block): Moved from bsi_remove, argument added.
	(bsi_remove): Made into wrapper for remove_bsi_from_block.

2003-08-13  Zdenek Dvorak  <rakdver@atrey.karlin.mff.cuni.cz>

	* tree-ssa-dom.c (optimize_stmt): Call get_stmt_operands.

2003-08-12  Jeff Law  <law@redhat.com>

	* tree-ssa-dom.c (optimize_stmt): Record equivalences created
	by memory stores.

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

	* tree-cfg.c (find_insert_location): Handle other control
	statements that may be at the end of the block.

2003-08-12  Zdenek Dvorak  <rakdver@atrey.karlin.mff.cuni.cz>

	* Makefile.in (tree-pretty-print.o): Add tree-iterator.h dependency.
	* tree-pretty-print.c: Include tree-iterator.h.
	(dump_generic_node): Avoid recursing into COMPOUND_EXPRs.

2003-08-12  Jeff Law  <law@redhat.com>

	* tree-ssa-dom.c (optimize_stmt): Optimize ABS_EXPR when we know
	the sign of the source operand.

	* tree-ssa-dom.c (optimize_stmt): Rewrite TRUNC_DIV_EXPR and
	TRUNC_MOD_EXPR even if the LHS is not an SSA variable.  Do not
	enter the new expression in the hash tables if !may_optimize_p.
	Also try GE_EXPR to see if this transformation is safe.

	* tree-ssa-dom.c (optimize_stmt): Fix typo in last change which
	prevented recording equivalences created by IOR_EXPR.

	* tree-ssa-dom.c (optimize_stmt): Record that the destination of
	a MODIFY_EXPR nonzero if the RHS contains an IOR with a nonzero
	constant.  Turn DIV/MOD by a power of 2 into SHIFT/AND if we know
	dividend is positive.

2003-08-11  Jeff Law  <law@redhat.com>

	* fold-const.c (fold, cases NE_EXPR and EQ_EXPR): Fold equality
	comparisons of non-weak symbol addresses against zero.

	* tree-ssa-ccp.c (fold_stmt): Strip unnecessary NOP_EXPRs from
	the folded result.

	* gimplify.c (gimplify_expr, case INDIRECT_REF): Copy the base
	object into a temporary if it's in static memory or is addressable.

2003-08-11  Steven Bosscher  <steven@gcc.gnu.org>

	* tree-alias-common.h (struct tree_alias_ops): Add a semicolon, fix
	bootstrap.

2003-08-10  Daniel Berlin  <dberlin@dberlin.org>

	* tree-dfa.c (compute_may_aliases): Move points-to initialization from
	here.
	(find_referenced_vars): To here.
	(get_memory_tag_for): Use new same_points_to_set function.

	* tree-alias-common.h (struct tree_alias_ops): Remove doxygen markers.
	Add same_points_to_set function to struct.
	(same_points_to_set): New function.

	* tree-alias-common.c (we_created_global_var): A bit of magic to ignore
	global var aliasing when we didn't create global var.  This will go
	away soon
	(same_points_to_set): New function.

	* tree-alias-andersen.c (struct andersen_alias_ops): Add
	andersen_same_points_to_set.
	(andersen_same_points_to_set): New function. Return true if the two
	variables have the same points-to set.

	* opts.c (common_handle_option): Add "none" as a points-to option.

2003-08-10  Paul Brook  <paul@nowt.org>

	* doc/install.texi: Mention --enable-languages=f95.

2003-08-09  Daniel Berlin  <dberlin@dberlin.org>

	* tree-pretty-print.c (dump_vops): check bb->tree_annotations, not
	bb->aux.

2003-08-08  Daniel Berlin  <dberlin@dberlin.org>

	* tree-cfg.c (bsi_insert_on_edge_immediate): If there's only
	one statement in the block, and it's an empty statement, replace it.

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

	* c-decl.c (c_expand_body_1): Restore support for
	!keep_function_tree_in_gimple_form.
	(finish_function, c_expand_deferred_function): Do TDI_inlined dump.

	* gimplify.c (voidify_wrapper_expr): Set TREE_SIDE_EFFECTS on the
	wrapper if we insert a MODIFY_EXPR.

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

	* Makefile.in (GTFILES): Add tree-ssa.c, tree-dfa.c and
	tree-ssa-ccp.c.
	(gt-tree-ssa.h, gt-tree-dfa.h, gt-tree-ssa-ccp.h): Depend on
	s-gtype.
	* tree-dfa.c (struct clobber_data_d): Remove.  Update all users.
	(struct alias_map_d): Mark for garbage collection.
	(struct walk_state): Add fields 'is_not_gimple' and
	'is_va_arg_expr'.
	(clobber_vars_r): Remove.  Update all users.
	(get_stmt_operands): Abort if attempting to get operands from a
	non-GIMPLE statement.
	(get_expr_operands): Likewise.
	Do not force a virtual operand when scanning VA_ARG_EXPR.
	(add_stmt_operand): If the variable has hidden uses, mark the
	statement as having volatile operands and return.
	If the variable occurs inside a VA_ARG_EXPR, add it as a virtual
	operand.
	(add_immediate_use): Call VARRAY_TREE_INIT instead of
	VARRAY_GENERIC_PTR_INIT.
	(dump_variable): Check is_in_va_arg_expr flag.
	(compute_may_aliases): Move code to find variables ...
	(find_referenced_vars): ... here.
	(find_vars_r): Abort if we find a non-GIMPLE expression
	unexpectedly.
	Mark variables found inside a VA_ARG_EXPR.
	Do not scan arguments for non-GIMPLE CALL_EXPRs.
	Remove local variable saved_is_store.
	Reformat some code for readability.
	(add_referenced_var): If the variable is already marked as having
	hidden uses, ignore it.
	If the variable is found inside a non-GIMPLE expression, mark it.
	If the variable is found inside a VA_ARG_EXPR, mark it.

	* tree-flow.h (struct var_ann_d): Add field is_in_va_arg_expr.
	(find_referenced_vars): Declare.
	* tree-optimize.c (optimize_function_tree): Call
	find_referenced_vars before computing may aliases.

	* tree-ssa-dce.c (need_to_preserve_store): Do not check if the
	variable has hidden uses.
	* tree-ssa-live.c (type_var_init): Likewise.

	* tree-ssa-ccp.c (ssa_edges): Mark for garbage collection.
	(tree_ssa_ccp): Use VARRAY_.*_EDGE calls to manipulate the varray
	of CFG edges.
	(add_control_edge): Likewise.
	(initialize): Likewise.
	* tree-ssa.c (struct def_blocks_d): Mark for garbage collection.
	(struct var_value_d): Likewise.
	(def_blocks_free): Remove.  Update all users.
	(rewrite_into_ssa): Do not specify free function when creating
	def_blocks and currdefs.
	Call sbitmap_free instead of free.
	(mark_def_sites): Call sbitmap_free instead of free.
	(set_def_block): Use GC allocation.
	(set_livein_block): Likewise.
	(insert_phi_nodes): Adjust name of varray def_maps when creating it.
	(insert_phis_for_deferred_variables): Remove call to BITMAP_XFREE.
	(insert_phi_nodes_for): Use GC allocation for phi_insertion_points.
	(init_tree_ssa): Remove typecast in call to memset.
	(set_value_for): Use GC allocation.
	(get_def_blocks_for): Remove typecast in call to htab_find.
	* varray.c (element): Add entry for struct edge_def *.
	* varray.h (enum varray_data_enum): Add VARRAY_DATA_EDGE.
	(union varray_data_tag): Add field of type struct edge_def *.
	(VARRAY_EDGE_INIT): Define.
	(VARRAY_EDGE): Define.
	(VARRAY_PUSH_EDGE): Define.
	(VARRAY_TOP_EDGE): Define.

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

	* tree-cfg.c (handle_switch_fallthru): Do not abort when the last
	statement of the case block needs to be the last statement of the
	block.
	(find_insert_location): Fix typo.

2003-08-06  Steven Bosscher  <steven@gcc.gnu.org>

	* tree-dfa.c (remove_phi_arg):  When the PHI no longer has
	arguments, don't remove it here, but do so...
	(remove_phi_arg_num): ...from here.

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

	* gimplify.c (gimplify_cond_expr): Gimplify shortcut expansion in
	a conditional context.

	* tree-cfg.c (make_catch_expr_blocks): Don't change next_block_link.
	(make_eh_filter_expr_blocks): Likewise.

	* tree-dfa.c (add_referenced_var): Static locals are call
	clobbered.

2003-08-05  Steven Bosscher  <steven@gcc.gnu.org>

	* tree-dfa.c (add_phi_arg): Allow PHI capacity to grow.
	* tree-flow.h  (add_phi_arg): Adjust prototype.
	* tree-ssa-pre.c (code_motion): Adjust call.
	* tree-ssa.c (rewrite_block): Likewise.
	* tree.c (resize_phi_node): New function.
	* tree.h (resize_phi_node): Add prototype.

2003-08-05  Jeff Law  <law@redhat.com>

	* tree-ssa-dom.c (optimize_block): Be more aggressive about
	creating equivalences from PHI nodes.

	* tree-ssa-dom.c (optimize_stmt): Strip away certain NOP_EXPRs
	before determining if we have an equivalence to enter into
	the const_and_copies table.

	* tree-ssa-dce.c (remove_dead_stmts): Iterate backwards through the
	basic blocks removing dead statements.  Within each block iterate
	backwards through the statements removing those which are dead.

	* tree-ssa-optimize.c (optimize_function_tree): Call
	remove_useless_stmts_and_vars before building the flow graph.
	* tree-cfg.c (remove_useless_stmts_and_vars): Rename argument from
	first_iteration to remove_unused_vars.

	* tree-cfg.c (remove_unreachable_blocks): Remove blocks in reverse
	order.
	(remove_bb): Remove unwanted call to bsi_next.
	(bsi_remove): Refine code which removes useless COMPOUND_EXPRs to allow
	removal if one of the arms is not associated with a basic block.
	(remove_stmt): Improve check for testing when a basic block head/end
	pointer needs to be updated when removing a COMPOUND_EXPR.

	* tree-cfg.c (phi_alternatives_equal): New function.
	(linearize_cond_expr): Allow linearization if the PHI nodes at the
	target have equivalent arguments for the incoming edges from the THEN
	and ELSE clauses.

	* tree-ssa-dce.c (mark_tree_necessary): Empty statements may be
	necessary.
	(process_worklist): Handle any incoming abnormal edges the first
	time a statement in each block becomes executable.

	* tree-ssa-ccp.c (substitute_and_fold): Substitute known
	constants into PHI nodes.

2003-08-04  Sebastian Pop  <s.pop@laposte.net>

	* basic-block.h: Declare bb_ann_d.
	(basic_block_def): Add a field tree_annotations.
	* cfg.c (entry_exit_blocks): Initialize tree_annotations to NULL.
	* cfghooks.c: Remove the definition of cfg_level.
	(rtl_register_cfg_hooks): Remove the initiallization of cfg_level.
	* cfghooks.h (cfg_hooks): Add cfgh_loop_optimizer_init, and
	cfgh_loop_optimizer_finalize.
	(loop_optimizer_init, loop_optimizer_finalize): New macros.
	(cfg_level): Remove.
	* cfgloop.h (loop_optimizer_init, loop_optimizer_finalize): Rename
	to rtl_loop_optimizer_init and rtl_loop_optimizer_finalize.
	* cfgrtl.c (rtl_loop_optimizer_init, rtl_loop_optimizer_finalize):
	Declare, and register them in rtl_cfg_hooks and cfg_layout_rtl_cfg_hook.
	* loop-init.c (loop_optimizer_init, loop_optimizer_finalize): Rename
	to rtl_loop_optimizer_init and rtl_loop_optimizer_finalize.  Remove
	the checks to cfg_level.
	* tree-cfg.c (block_tree_ann_obstack, first_block_tree_ann_obj): New.
	(create_blocks_annotations, create_block_annotation,
	free_blocks_annotations, clear_blocks_annotations): New functions.
	(tree_loop_optimizer_init, tree_loop_optimizer_finalize): New
	functions.  Register them in tree_cfg_hooks.
	(build_tree_cfg, dump_tree_bb, delete_tree_cfg, tree_split_edge): Use
	create_blocks_annotations instead of alloc_aux_for_blocks,
	create_block_annotation instead of alloc_aux_for_block,
	.tree_annotations instead of .aux,
	free_blocks_annotations instead of free_aux_for_blocks.
	(tree_register_cfg_hooks): Remove initialization of cfg_level.
	* tree-flow-inline.h (bb_ann): Use .tree_annotations.
	* tree-flow.h: Update comment.

2003-08-04  Zdenek Dvorak  <rakdver@atrey.karlin.mff.cuni.cz>

	* Makefile.in (c-pretty-print.o): Add TREE_H and C_TREE_H dependencies.

2003-08-01  Paul Brook  <paul@nowt.org>

	* Makefile.in (GMPINC): Set and use.
	(GMPLIBS): Set it.
	* configure.in: Add test and switches for the GMP library.
	(all_need_gmp): Set from config-lang.in.
	* sourcebuild.texi: Document need_gmp.
	* configure: regen

2003-08-01  Steven Bosscher  <steven@gcc.gnu.org>

	* tree-inline.c (expand_calls_inline): Fix comments.

2003-07-31  Diego Novillo  <dnovillo@redhat.com>

	* Makefile.in (tree-ssa-ccp.o): Depend on $(EXPR_H).
	* builtins.c (c_strlen): Remove static declaration.
	(simplify_builtin_fputs): Remove static declaration.
	(simplify_builtin_sprintf): New local function.
	(expand_builtin_sprintf): Remove by surrounding with #if 0.
	(expand_builtin): Add BUILT_IN_SPRINTF to the list of built-ins
	handed over to simplify_builtin.
	(validate_arglist): Do not allow arguments with TREE_SIDE_EFFECTS.
	(simplify_builtin_fputs): Add new argument KNOWN_LEN.  If it's set,
	use it instead of trying to compute the length of the string.
	Update all callers.
	* expr.h (simplify_builtin_fputs): Declare.
	* tree-flow.h (fold_stmt): Change argument type to tree *.  Update
	all users.
	* tree-ssa-ccp.c: Include expr.h.
	(replace_uses_in): If the statement makes a call to some selected
	built-ins, mark it for folding.
	(get_strlen): New local function.
	(ccp_fold_builtin): New local function.
	(fold_stmt): Call it.
	(set_rhs): Fix if-else-if chaining.  Handle cases where the whole
	statement needs to be replaced.
	* tree.h (c_strlen): Declare.

2003-07-31  Diego Novillo  <dnovillo@redhat.com>

	Fix PR optimization/11373
	* tree-ssa-dce.c (stmt_useful_p): Get statement operands before
	checking for volatile operands.
	* tree-dfa.c (get_expr_operands): If a constant is dereferenced as a
	pointer, mark the statement as having volatile operands.
	(may_access_global_mem_p): If a non-NULL constant is used as a
	pointer, consider it as pointing to global memory.
	* tree-ssa-dom.c (optimize_stmt): Set addr_expr_propagated_p when
	propagating pointers that are integer constants.

2003-07-31  Andrew MacLeod  <amacleod@redhat.com>

	* tree-dfa.c (add_stmt_operand): Don't treat complex types as scalars.
	* tree-ssa-live.c (var_union):  Change comment.
	(coalesce_tpa_members): Don't proceed if var_union fails.
	* tree-ssa.c (insert_copy_on_edge): Change comment.
	(coalesce_abnormal_edges): Handle var_union failing.
	(coalesce_vars): Skip constant PHI arguments.

2003-07-30  Jeff Law  <law@redhat.com>

	* tree-cfg.c (bsi_remove): Don't remove a COMPOUND_EXPR with empty
	arms if the arms are in different basic blocks.

	* tree-ssa-dom.c (record_cond_is_false): New function.
	(record_cond_is_true): Similarly.
	(get_eq_expr_value): Use record_cond_expr_is_{true,false}.
	(optimize_stmt): Fix minor formatting issue.  If we encounter an
	INDIRECT_REF, record that the dereferenced pointer can not be
	null.

2003-07-30  Daniel Berlin  <dberlin@dberlin.org>

	* tree-dump.c (dump_option_value_in): "all" is now everything but
	TDF_RAW and TDF_SLIM.

2003-07-30  Diego Novillo  <dnovillo@redhat.com>

	* tree-simple.c (is_gimple_const): Accept CONST + CONST expressions
	as GIMPLE constants.

2003-07-30  Daniel Berlin  <dberlin@dberlin.org>

	* tree-ssa-pre.c: #include real.h
	(defs_match_p): Change arguments to something normal now that we use
	the new renaming algorithm. Update all callers.
	Use defs_hash_expr.
	(defs_y_dom_x): Ditto.
	(defs_hash_expr): New. Based on iterative_hash_expr.
	(generate_exr_as_of_bb): If there aren't any uses, return.
	(subst_phis): Call modify_stmt on the actually modified statement. :)
	(get_default_def): Only walk SSA_NAME arguments in PHI's.

2003-07-30  Jason Merrill  <jason@redhat.com>

	Don't modify code that is already GIMPLE.
	* gimplify.c (gimplify_expr): Don't return early if the predicate
	matches.
	Use a variable temp if the caller wants an lvalue.
	Don't call gimplify_constructor if we're on the rhs of a MODIFY_EXPR.
	(add_tree, add_stmt_to_compound): Do add an empty stmt if we
	previously had nothing at all.
	(gimplify_return_expr): Don't mess with iterators if it was already
	gimple.
	(gimplify_cond_expr): Remove a COND_EXPR with two empty arms.
	(gimplify_call_expr): Try to simplify a builtin again after
	gimplifying the args.
	(internal_get_tmp_var): Gimplify the new MODIFY_EXPR.
	(gimplify_expr, gimple_push_cleanup): Use boolean_false_node.
	(gimplify_init_constructor): New fn, broken out from...
	(gimplify_modify_expr): ...here.  Be smarter about zero-initialization.
	* tree-simple.c (is_gimple_rhs): Accept any CONSTRUCTOR.
	* tree-simple.h: Adjust add_tree prototype.

2003-07-29  Daniel Berlin  <dberlin@dberlin.org>

	* tree-alias-common.c (create_alias_vars):  If we created global_var,
	delete it when we are done.
	(ptr_may_alias_var): Handle case that global_var is now NULL_TREE.

2003-07-29  Jeff Law  <law@redhat.com>

	* tree-ssa-dom.c (optimize_stmt): Propagate copies into VUSEs and
	the RHS of VDEFs.

2003-07-29  Andrew MacLeod  <amacleod@redhat.com>

	* tree-ssa.c (insert_copy_on_edge): Only set used bit on DECL nodes.

2003-07-29  Andrew MacLeod  <amacleod@redhat.com>

	* common.opt (ftree-combine-temps): Add new option.
	* flags.h (flag_tree_combine_temps): New flag.
	* opts.c (decode_options): Initialize flag_tree_combine_temps.
	(common_handle_option): Handle new flag.
	* toplev.c (flag_tree_combine_temps): Declare.
	(lang_independent_options f): Add tree-combine-temp.
	* tree-ssa-live.c (var_union): When combining 2 root variables, choose
	the user variable over a temporary as the new variable.
	(compact_var_map): Use renamed root_var routines.
	(calculate_live_on_exit): Reformatting.
	(tpa_init): Initialize a tpa object.
	(tpa_remove_partition): Remove a partition from a tpa list.
	(tpa_delete): Delete a tpa object.
	(tpa_compact): Hide single elemenet lists.
	(root_var_init): Split common part into tpa_init and rename.
	(remove_root_var_partition, delete_root_va, dump_root_var): Delete.
	(type_var_init): New. Initialize a type_var object.
	(create_coalesce_list): New. Create a coalesce_list object.
	(delete_coalesce_list): New. Free a coalesce list's memory.
	(find_partition_pair): New. Find a coalesce pair in a coalesce list.
	(add_coalesce): New. Add a coalesce between 2 partitions.
	(sort_coalesce_list): New. Sort coalesce pairs by importance.
	(pop_best_coalesce): New. Get best remaining pair to coalesce.
	(add_conflicts_if_valid): Move from tree-ssa.c.
	(build_tree_conflict_graph): Move from coalesce_ssa_name in tree-ssa.c.
	Genericize to use tpa_p instead of root_var object. Don't add
	interferences between copies. Update coalesce list.
	(coalesce_tpa_members): Move from coalesce_ssa_name in tree-ssa.c. Use
	tpa_p instead of root_var. Use coalesce list if provided.
	(dump_coalesce_list): New. Show debug info for a coalesce list.
	(tpa_dump): Rename from dump_root_var and genericize to use tpa_p.
	* tree-ssa-live.h (root_var_p): Rename structure type to tpa_p
	(tpa_num_trees, tpa_tree, tpa_first_partition, tpa_next_partition,
	tpa_find_tree): New. Generic versions of existing root_var routines.
	(tpa_decompact): New. Include single version lists.
	(root_var_p): Declare as type tpa_p.
	(root_var_num, root_var, root_var_first_partition,
	root_var_next_partition, root_var_dump, root_var_delete,
	root_var_remove_partition, root_var_find , root_var_compac,
	root_var_decompac): Rename and call generic versions.
	(type_var_p): New. Use tpa_p structure for a type based association.
	(type_var_num, type_var, type_var_first_partition,
	type_var_next_partition, type_var_dump, type_var_delete,
	type_var_remove_partition, type_var_find, type_var_compact,
	type_var_decompact): New. Call generic versions of the routine.
	(struct partition_pair_d): New. Represent a desired coalesce.
	(struct coalesce_list_d): New. Organize lists of desired coalesces.
	(NO_BEST_COALESCE): Define value.
	* tree-ssa.c (set_if_valid): Remove.
	(insert_copy_on_edge): Set variable as used when inserting a copy.
	(add_conflicts_if_valid): Remove. Move to tree-ssa-live.c.
	(print_exprs): New. Routine for commonly used output format.
	(coalesce_abnormal_edges): New. Split from coalece_ssa_name. Force
	partition coalesces across abnormal edges.
	(coalesce_ssa_name): Split out build_tree_conflict_graph,
	coalesce_abnormal_edges, and coalesce_tpa_members. Return live
	range info if required. Use renamed root_var routines.
	(assign_vars): Use renamed root_var routines.
	(replace_variable): Mark as inline.
	(coalesce_vars): Coalesce variable memory storage.
	(rewrite_out_of_ssa): Don't compact varmap anymore. Free live range
	info if required. Call coalesce_vars if combining temps.

2003-07-29  Andrew MacLeod  <amacleod@redhat.com>

	* tree-cfg.c (handle_switch_fallthru): Use bsi_link_after if stmt is
	in a basic block.

2003-07-28  Diego Novillo  <dnovillo@redhat.com>

	* opts.c (decode_options): Disable must-alias optimization.

2003-07-28  Andrew MacLeod  <amacleod@redhat.com>

	* tree-ssa.c (struct _elim_graph): Add varray for constant copies.
	(new_elim_graph): Initialize constant copy array..
	(eliminate_build): Push constant copies onto stack instead of emitting.
	(eliminate_phi): Emit any pending constant copies.

2003-07-28  Jeff Law  <law@redhat.com>

	* tree-ssa-dom.c (optimize_block): If a PHI has a single argument
	that is a constant, then that creates a useful equivalence.
	Propagate constant values into PHI nodes.

	* tree-flow-inline.h (may_propagate_copy): Allow RHS to be a
	constant.

	* tree-dfa.c (compute_immediate_uses_for): Do not assume that
	PHI arguments are SSA_NAMEs.
	* tree-ssa-dce.c (process_worklist): Likewise.
	* tree-ssa-copyprop.c (copyprop_phi): Likewise.  Use may_propagate_copy.
	* tree-ssa-ccp.c (visit_phi_node): Do not assume that PHI arguments
	are SSA_NAMEs.  Create a suitable value if a PHI argument is a
	constant.

	* tree-cfg.c (move_outgoing_edges): Correctly handle case where
	an edge already exists from BB1 to BB2's successor.

2003-07-27  Daniel Berlin  <dberlin@dberlin.org>

	* tree.h (EREF_TEMP): Rename to EPHI_TEMP.
	(tree_eref_common): Move temp to tree_ephi_node.
	* tree-ssa-pre.c: Remove #if 0'd code.
	Use EPHI_TEMP rather than EREF_TEMP, remove EREF_TEMP on EUSE nodes.
    (finalize_1): Handle empty blocks properly.

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

	* tree.c: Convert remaining K&R prototypes to ISO C90.
	* tree-dump.c: Likewise.
	* tree-inline.c: Likewise.
	* stmt.c (expand_asm_expr): Likewise.

	* diagnostic.h: Remove PARAMS.

2003-07-26  Paul Brook  <paul@nowt.org>

	* Makefile.in: Rename check-g95 to check-gfortran.
	* gcc.c (default_compilers): Add entries for .f90 and .f95.
	* doc/frontends.texi: Document new F95 front end.
	* doc/install.texi: Ditto.
	* doc/invoke.texi: Ditto.
	* doc/sourcebuild.texi: Ditto.
	* fortran: New front end.

2003-07-25  Jeff law  <law@redhat.com>

	* tree-ssa-dom.c (optimize_block): Use may_propagate_copy.

2003-07-25  Diego Novillo  <dnovillo@redhat.com>

	* opts.c (decode_options): Re-enable must-alias optimizations.

2003-07-25  Daniel Berlin  <dberlin@dberlin.org>

	* configure.in:  Update BANSHEEREBUILD for PWD change.
	* configure: regen

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

	* c-call-graph.c: Convert to ISO C90.
	* c-common.c: Likewise.
	* c-mudflap.c: Likewise.
	* c-pretty-print.c: Likewise.
	* cfganal.c (find_edge): Likewise.
	* dependence.c: Likewise.
	* diagnostic.c (debug_output_buffer): Likewise.
	* except.c (expand_eh_handler): Likewise.
	* fold-const.c: Likewise.
	* langhooks.c: Likewise.
	* tree-cfg.c (last_exec_block): Likewise.
	* tree-ssa-pre.c: Likewise.
	* builtins.c: Likewise.

	* tree.h: Remove remaining PARAMS.
	* c-common.h: Likewise.
	* c-pretty-print.h: Likewise
	* c-tree.h: Likewise.
	* except.h: Likewise.
	* langhooks-def.h: Likewise.
	* langhooks.h: Likewise.

2003-07-24  Diego Novillo  <dnovillo@redhat.com>

	* tree-dfa.c (cleanup_operand_arrays): New local function.  Remove
	superfluous VUSE operands.
	(get_stmt_operands): Call it.

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

	* gimplify.c (gimple_boolify): New fn.
	(gimplify_expr) <TRUTH_NOT_EXPR>: Boolify arg.
	(gimplify_cond_expr): Boolify condition.
	(gimplify_boolean_expr): Boolify args.
	(gimple_push_cleanup): Make flag boolean.

	* tree-simple.c (is_gimple_relop): TRUTH_{AND,OR,XOR}_EXPR
	are not comparisons.
	(is_gimple_binary_expr): They are binary ops.

	* tree-mudflap.c (mf_build_check_statement_for): Use TRUTH_OR_EXPR
	rather than BIT_IOR_EXPR.

2003-07-23  Jason Merrill  <jason@redhat.com>
	    Diego Novillo  <dnovillo@redhat.com>

	* c-common.h (DECL_C_HARD_REGISTER): Replace ...
	* tree.h (DECL_HARD_REGISTER): ... with this.  Update all users.

2003-07-23  Diego Novillo  <dnovillo@redhat.com>

	* tree-flow-inline.h (may_propagate_copy): New function.
	* tree-flow.h (may_propagate_copy): Declare.
	* tree-ssa-copyprop.c (copyprop_stmt): Call it.
	(get_original): Likewise.
	* tree-ssa-dom.c (optimize_stmt): Likewise.

2003-07-23  Frank Ch. Eigler  <fche@redhat.com>

	* gcc.c (MFWRAP_SPEC): Also wrap pthread_join and pthread_exit.

2003-07-23  Steven Bosscher  <steven@gcc.gnu.org>

	* tree-flow-inline.h (remove_dom_child): New function.
	(clear_dom_children): New function.
	* tree-cfg.c (bsi_insert_on_edge_immediate): Do not clear
	the annotation for the new bb, it is already memset to zero
	in alloc_aux_for_block().
	(move_outgoing_edges): Use dom_children() instead of looking
	at the dom_children field in the basic block annotation.
	* tree-ssa.c (rewrite_into_ssa): Use clear_dom_children().

	* tree-cfg.c (dump_tree_cfg): Dump to `file', not `dump_file'.

2003-07-23  Diego Novillo  <dnovillo@redhat.com>

	* tree.h (DECL_ESTIMATED_INSNS): Move from c-common.h.

2003-07-23  Steven Bosscher  <steven@gcc.gnu.org>

	* tree-ssa-dom.c (tree_ssa_dominator_optimize): Make
	found_unreachable a bool.  Create/delete hash tables for
	copies and available exprs outside the main loop.  Use
	htab_clean to wipe them after each iteration.

2003-07-22  Diego Novillo  <dnovillo@redhat.com>

	* opts.c (decode_options): Add temporary test for environment
	variable TREE_SSA_DO_PRE.
	Do not disable dominator optimizations when PRE is enabled.

2003-07-22  Daniel Berlin  <dberlin@dberlin.org>

	* tree-ssa-pre.c (finalize_1): Change to not use bsi_last.

2003-07-22  Daniel Berlin  <dberlin@dberlin.org>

	* tree-cfg.c (remove_stmt): Revert 07-15 change. Turns out the bug is in
	the reverse iterator.

2003-07-22  Diego Novillo  <dnovillo@redhat.com>

	* tree-ssa-ccp.c (visit_phi_node): Assume default value of CONSTANT
	if the PHI value was already constant.

2003-07-22  Andrew MacLeod  <amacleod@redhat.com>

	* c-pretty-print.c (print_call_name): Handle COND_EXPR correctly.
	* tree-pretty-print.c (print_call_name): Handle COND_EXPR correctly and
	handle SSA_NAME.
	* tree-dfa.c (add_phi_arg, remove_phi_arg_num): Remove references to
	SSA_NAME_HAS_REAL_REFS.
	* tree-ssa-ccp.c (visit_phi_node): Remove SSA_NAME_HAS_REAL_REFS.
	* tree-ssa-copyprop.c (copyprop_phi): Remove SSA_NAME_HAS_REAL_REFS.
	* tree-ssa-live.c (register_ssa_partition): Register the PHI and it's
	arguments if this variable is defined by a PHI.
	(create_ssa_var_map): Only register real uses and defs, and virtual
	operands of ASM_EXPR's. Remove SSA_NAME_HAS_REAL_REFS. Don't set
	used flag on variables here.
	(calculate_live_on_entry): Ignore constants in PHI arguments.
	(calculate_live_on_exit): Ignore constants in PHI arguments.
	(dump_live_info): New. Dump live range information.
	* tree-ssa-live.h (dump_live_info): New prototype and flags.
	* tree-ssa-pre.c (create_expr_ref, finalize_1, repair_use_injury,
	code_motion): Remove SSA_NAME_HAS_REAL_REFS.
	* tree-ssa.c (rewrite_operand, register_new_def): Remove real_ref
	parameter and SSA_NAME_HAS_REAL_REFS.
	(rewrite_block): Remove real_ref parameter from register_new_def call.
	(eliminate_build): Remove SSA_NAME_HAS_REAL_REFS. Insert copy if PHI
	argument is a constant. Handle irregular PHI argument ordering.
	(elim_create): Remove dead code to count PHI nodes.
	(assign_vars): Set used flag on variables when assigned.
	(replace_variable): Eliminate dead code.
	(coalesce_ssa_name): Remove SSA_NAME_HAS_REAL_REFS. Print error for
	constant argument across an abnormal edge.
	(eliminate_extraneous_phis): New. Remove PHI nodes which are not in
	the partition.
	(rewrite_out_of_ssa): Call eliminate_extraneous_phis.
	(rewrite_stmt): Remove real_ref parameter from rewrite_operand and
	register_new_def.
	* tree.h (SSA_NAME_HAS_REAL_REFS): Remove.
	(struct tree_ssa_name): Remove 'has_real_refs' field.

2003-07-22  Daniel Berlin  <dberlin@dberlin.org>

	* tree-ssa-pre.c (factor_through_injuries): Take new argument specifying
	whether use was injured or not (needed for SR).   Update all callers.
	(maybe_find_rhs_use_for_var): Take new argument specifying which
	operand to start search with.   Update all callers.
	(phi_opnd_from_res): #if 0 out.
	(rename_2): Ditto.
	(rename_1): Ditto.
	(defs_match_p): Take new arguments specifying which defs were injured.
	Update all callers.
	(defs_y_dom_x): Ditto.
	(generate_expr_as_of_bb): Fix small memory overwrite.
	(process_delayed_rename): Propagate injured flag around.
	(new_rename_1): Ditto.
	(finalize_1): Get correct variable names for newly created statement if
	necessary due to PHI.
	(repair_use_injury): Note the repair in the stats. Insert repair
	in right place.
	(repair_euse_injury): Fix handling of PHI_NODE.
	(code_motion): Fix algorithm so it can handle using reaching_def all the
	time (needed for SR).
	Use reaching_def rather than EREF_TEMP.

2003-07-21  Diego Novillo  <dnovillo@redhat.com>

	* tree-dfa.c (get_stmt_operands): Remove FIXME note
	regarding virtual operands for ASM_EXPRs.

2003-07-21  Diego Novillo  <dnovillo@redhat.com>

	* tree-dfa.c (add_def): Renamed from set_def.  Update all users.
	(get_stmt_operands): Don't force ASM_EXPR operands to be virtual.
	(add_stmt_operand): Allow non-assignments to create new defs.
	* tree-dump.c (dump_function): Move header dump...
	(dump_function_to_file): ... here.
	* tree-flow-inline.h (def_ops): Renamed from def_op.  Return a
	varray with all the definitions made by the statement.
	Update all users.
	* tree-flow.h (struct operands_d): Rename field 'def_op' to
	'def_ops'.  Convert it into a varray.
	* tree-must-alias.c (tree_compute_must_alias): Call
	dump_function_to_file instead of dump_function.
	* tree-ssa-ccp.c (tree_ssa_ccp): Likewise.
	(visit_stmt): Only visit statements that make new definitions using
	MODIFY_EXPR.
	Definitions coming from other statements are considered VARYING.
	* tree-ssa-copyprop.c (tree_ssa_copyprop): Call
	dump_function_to_file instead of dump_function.
	* tree-ssa-dce.c (tree_ssa_dce): Likewise.
	* tree-ssa-dom.c (tree_ssa_dominator_optimize): Likewise.
	(optimize_stmt): Don't abort if a statement makes more than one
	definition.
	Check for MODIFY_EXPR statements directly, instead of relying on
	the presence of a single definition.
	* tree-ssa-pre.c (tree_perform_ssapre): Call dump_function_to_file
	instead of dump_function.
	* tree-ssa.c (rewrite_into_ssa): Likewise.
	Dump the function before dominator optimizations if TDF_DETAILS is
	set.
	(rewrite_stmt): Don't abort if the statement makes more than one
	definition.

2003-07-21  Jeff Law  <law@redhat.com>

	* tree-ssa-dom.c (tree_ssa_dominator_optimize): If we made any
	blocks unreachable, repeat the dominator optimizations.
	(optimize_block): Enter PHIs with a single source argument into
	the const_and_copies table.  When propagating into a PHI node,
	break the loop over the PHI arguments when a propagation is performed.
	If the PHI agument is not an SSA_VAR, then no propagation is possible.
	(optimize_stmt): If an operand is not an SSA_VAR, then no propagation
	is possible/needed.

2003-07-21  Diego Novillo  <dnovillo@redhat.com>

	* Makefile.in (tree-ssa-dom.o): Add dependency on $(TREE_DUMP_H).
	* fold-const.c (fold): Remove unusued local variable 'invert'.
	* tree-dump.c (dump_files): Add entry for -fdump-tree-dom.
	* tree-flow.h (tree_ssa_dominator_optimize): Change declaration to
	accept a function decl.
	* tree-ssa-dom.c: Include timevar.h and tree-dump.h.
	(tree_ssa_dominator_optimize): Change to receive the function decl
	for the function to optimize.  Update callers.
	Use own dump file instead of dumping on the .ssa dump file.
	Dump function at the end.
	Push and pop TV_TREE_SSA_DOMINATOR_OPTS.
	* tree-ssa.c (rewrite_into_ssa): Restore check for number of times
	that the rename loop has been executed.  Abort if the loop executes
	more than twice.
	* tree.h (enum tree_dump_index): Add TDI_dom.
	* doc/invoke.texi: Document -fdump-tree-dom.

2003-07-21  Steven Bosscher  <steven@gcc.gnu.org>
	    Diego Novillo  <dnovillo@redhat.com>

	* Makefile.in (install-po): Check if $CATALOGS is empty to avoid
	buggy shells.
	* basic-block.h (rtl_verify_flow_info): Remove.
	(tree_verify_flow_info): Remove.
	(verify_flow_info): Declare.
	* builtins.c: Rearrange to simplify merges.  Add #if 0 around
	expand_ functions that are not used in the branch and move new code
	to the end of the file.
	* c-opts.c (c_common_handle_option): Move handling of -fdump- to
	opts.c.
	* cfgloopmanip.c (loop_split_edge_with_NULL): Remove.  Update all
	users.
	* common.opt: Add all the tree-ssa switches.
	* opts.c: Handle them.
	* flags.h (flag_tree_cp): Remove unused variable.
	(enum pta_type): Move from tree-must-alias.h
	(flag_tree_points_to): Likewise.
	* toplev.c (flag_tree_cp): Remove unused variable.
	* tree-cfg.c: Move cfg_hooks structures and functions for
	trees from cfghooks.c.
	* tree-mudflap.c (mudflap_enqueue_decl): Don't use %D to
	avoid warning about format specifiers.

2003-07-21  Diego Novillo  <dnovillo@redhat.com>

	* gimplify.c (gimplify_function_tree): Move gimplification of the
	function body ...
	(gimplify_body): ... here.
	* tree-simple.h (gimplify_body): Declare.
	* tree-inline.c (initialize_inlined_parameters): If the
	emitted assignment is not in GIMPLE form, gimplify the
	body of assignments emitted.

2003-07-17  Jeff Law  <law@redhat.com>

	* tree-dfa.c (remove_phi_arg): Update PHI_ARG_CAPACITY.

	* tree-ssa.c (mark_def_sites): Do not build the dominator tree here.
	(rewrite_into_ssa): Do not depend on mark_def_sites to build the
	dominator tree.   Move computation of dominance frontiers out
	of main loop (even though it was only done once).  Free immediate
	dominator information as soon as we're done with it.

	* tree-flow.h (remove_phi_nodes_and_edges_for_unreachable_block):
	Prototype.
	* tree-cfg.c (remove_phi_nodes_and_edges_for_unreachable_block): New
	function extracted from remove_bb.
	(remove_bb): Call remove_phi_nodes_and_edges_for_unreachable_block.

	* tree-ssa-dom.c (optimize_block): Propagate values into PHI nodes.
	Do not optimize a block which has become unreachable.
	If a COND_EXPR has a compile-time constant condition, then remove
	outgoing from the COND_EXPR which can not execute.

2003-07-16  Frank Ch. Eigler  <fche@redhat.com>

	* tree-mudflap.c (mx_xfn_indirect_ref): Correct source locations
	for tracked expressions by ignoring incidental decl source loci.

2003-07-16  Jeff Law  <law@redhat.com>

	* tree-cfg.c (remove_bb): Remove statements in reverse order.
	Simplify code to issue warnings for unreachable code.

	* tree-ssa-dom.c (get_eq_expr_value): Also enter expressions
	into the available expression hash table.  Callers changed to
	pass in the block_avail_exprs varray and const_and_copies hash
	table.
	(optimize_stmt): Allow optimization of the condition in
	a COND_EXPR statement.
	(lookup_avail_expr): For COND_EXPRs, just see if their condition
	has been recorded into the hash table, do not enter them into
	the hash table.  Only do a lookup of the result in the
	const_and_copies table if it is an SSA_VAR.
	(avail_expr_hash): Handle COND_EXPRs, specifically we only care
	about their condition and virtual operands.
	(avail_expr_eq): Likewise.  If one statement has virtual operands
	and the other does not, then the expressions are not equal.

	* tree-ssa.c (rewrite_into_ssa): If we have done dominator
	optimizations, then call cleanup_tree_cfg after rewriting is
	complete.
	* tree-ssa-dom.c (optimize_block): Get eq_expr_value for the
	current block rather than having it passed in by the caller.
	Propagate eq_expr_value into the false arm of a COND_EXPR.
	(get_eq_expr_value): Return equivalences for the false
	arm of a COND_EXPR if requested.

2003-07-16  Daniel Berlin  <dberlin@dberlin.org>

	* c-decl.c (store_parm_decls): Also strip NON_LVALUE_EXPRs and
	CONVERT_EXPRs when setting DECL_NONLOCAL.

2003-07-15  Daniel Berlin  <dberlin@dberlin.org>

	* tree-cfg.c (remove_stmt): Update bb->end_tree_p properly when
	stmt_p is the end of the bb.

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

	* tree-ssa-dom.c (optimize_stmt): Consider two types equivalent if
	their TYPE_MAIN_VARIANT is equivalent.
	(avail_expr_eq): Likewise.

	* Makefile.in (OBJS): Add tree-ssa-dom.o
	(tree-ssa-dom.o): Add dependencies.
	(ssa.o, cfghooks.o): Use $(TREE_FLOW_H), not tree-flow.h.
	* timevar.def: Add new timevar for dominator optimizer.  Reorder
	slightly.
	* tree-dfa.c (add_stmt_operand): Do not consider references to
	static storage as volatile operands.
	(add_referenced_var): Static storage items reference global memory.
	* tree-ssa.c: Simplify by moving everything specific to the
	dominator optimizer into tree-ssa-dom.c.  Call into the dominator
	optimizer after rewriting all the basic blocks.
	* tree-ssa-dom.c: New file.  Mostly extracted from tree-ssa.c
	* tree-flow.h (tree_ssa_dominator_optimize): Prototype.
	(dump_dominator_optimization_stats): Likewise.
	(debug_dominator_optimization_stats): Likewise.

2003-07-15  Diego Novillo  <dnovillo@redhat.com>

	* tree-dfa.c (add_stmt_operand): Move volatile handling...
	(find_vars_r): ... here.
	Mark when the walker is inside an ASM_EXPR.
	(struct walk_state): Add field 'is_asm_expr'.
	Change flag fields to bitfields.
	(add_referenced_var): If the variable is a pointer being stored by
	an ASM_EXPR, mark it as a global memory pointer.
	* tree-flow-inline.h (is_optimizable_addr_expr): New function.
	* tree-flow.h (is_optimizable_addr_expr): Declare it.
	* tree-ssa.c (rewrite_and_optimize_stmt): Use it.
	(lookup_avail_expr): Likewise.
	(get_eq_expr_value): Likewise.
	(avail_expr_eq): Return 'true' when comparing a statement against
	itself.
	* tree-ssa-dce.c (need_to_preserve_store): Move volatile checking...
	(stmt_useful_p): ...here.

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

	* c-simplify.c: Convert prototypes to ISO C90.
	* gimplify.c: Likewise.
	* simple-break-elim.c: Likewise.
	* simple-goto-elim.c: Likewise.

	* tree-alias-ander.c: Convert prototypes to ISO C90.
	* tree-alias-common.c: Likewise.
	* tree-alias-type.c: Likewise.
	* tree-browser.c: Likewise.
	* tree-dchain.c: Likewise.
	* tree-mudflap.c: Likewise.
	* tree-nomudflap.c: Likewise.
	* tree-optimize.c: Likewise.
	* tree-pretty-print.c: Likewise.
	* tree-simple.c: Likewise.

	* tree-alias-common.h: Convert prototypes to ISO C90, remove extra
	whitespace.
	* tree-alias-type.h: Convert prototypes to ISO C90.
	* tree-dchain.h: Likewise.
	* tree-flow-inline.h: Likewise.
	* tree-flow.h: Likewise.
	* tree-iterator.h: Likewise.
	* tree-mudflap.h: Likewise.
	* tree-simple.h: Likewise.

2003-07-14  Daniel Berlin  <dberlin@dberlin.org>

	* tree-ssa-pre.c (tree_perform_ssapre): Fix dom_children after DCE
	breaks them.

2003-07-14  Diego Novillo  <dnovillo@redhat.com>

	* tree-dfa.c (add_vdef): Initialize variable 'vdef'.
	(add_vuse): Initialize variable 'vuse'.

2003-07-14  Diego Novillo  <dnovillo@redhat.com>

	Must alias analysis.  Allow the SSA rename pass to be done on a set
	of variables.

	* Makefile.in (OBJS): Add tree-must-alias.o.
	* flags.h (flag_tree_must_alias): Declare.
	* timevar.def (TV_TREE_MUST_ALIAS): Define.
	* toplev.c (flag_tree_must_alias): Declare.
	(f_options): Add entry for -ftree-must-alias.
	(parse_options_and_default_flags): Enable must-alias analysis at -O1.

	* tree-cfg.c (remove_useless_stmts_and_vars): Do not remove
	addressable variables.

	* tree-dfa.c (dump_file, dump_flags): New local variables to
	replace tree_ssa_dump_file and tree_ssa_dump_flags.  Update every
	user.
	(get_stmt_operands): Clear the array of virtual operands before
	scanning the statement.
	(get_expr_operands): Do not add an operand for ADDR_EXPR if the
	expression takes the address of a VAR_DECL or a PARM_DECL.  Instead
	add the variable to the list of variables whose address has been
	taken by the statement.
	Allow INDIRECT_REF expressions of the form *&VAR.  Convert them
	into an operand for VAR.
	When processing function calls, add a VUSE for .GLOBAL_VAR if the
	function is pure but not const.
	(add_stmt_operand): If the operand is an ADDR_EXPR, add the
	variable to the list of variables whose address has been taken by
	the statement.
	(add_vdef): If the statement had virtual definitions, try to find
	an existing VDEF for the variable, to preserve SSA information.  If
	none is found, create a new one.
	(add_vuse): Likewise.
	(remove_all_phi_nodes_for): New function.
	(get_call_flags): New function to replace call_may_clobber.  Update
	all callers.

	* tree-dump.c (dump_files): Add entry for -fdump-tree-mustalias.
	* tree-flow-inline.h (addresses_taken): New function.
	(is_unchanging_value): New function.

	* tree-flow.h (addresses_taken): Declare.
	(remove_all_phi_nodes): Declare.
	(init_tree_ssa): Declare.
	(propagate_copy): Declare.
	(is_unchanging_value): Declare.
	(tree_compute_must_alias): Declare.

	* tree-inline.c (copy_body_r): Fold instances of *&VAR.

	* tree-must-alias.c: New file.

	* tree-optimize.c (optimize_function_tree): Call init_tree_ssa and
	compute_may_aliases before calling rewrite_into_ssa.
	After the SSA pass, run dead code elimination and compute
	must-aliases.

	* tree-simple.c (is_gimple_call_expr): Add comment that
	is_gimple_* predicates should not have side effects.

	* tree-ssa-ccp.c: Replace calls to really_constant_p with
	is_unchanging_value everywhere.
	(fold_stmt): Don't fold if the RHS is already a constant.

	* tree-ssa-copyprop.c (copyprop_stmt): Remove unnecessary
	variable 'vuse'.
	Call propagate_copy to replace the operand with its new value.
	(copyprop_phi): Remove unnecessary variable 'vuse'.
	(get_original): Remove unused parameter 'vuse_p'.
	(propagate_copy): New function.

	* tree-ssa-dce.c (need_to_preserve_store): Update comments.

	* tree-ssa.c (dump_file, dump_flags): New local variables to
	replace globals tree_ssa_dump_file and tree_ssa_dump_flags.  Update
	all users.
	(addr_expr_propagated_p): New local variable.
	(vars_to_rename): New local variable.
	(check_for_new_variables): New local function.
	(rewrite_into_ssa): Add new argument VARS which is a bitmap
	representing all the variables that should be renamed into SSA.  If
	VARS is NULL, all the variables in the program are renamed.
	Don't call init_tree_ssa nor compute_may_aliases.
	Initialize all the local hash tables and bitmaps.
	Add support for repeating the SSA rename process more than once.
	If the dominator optimizations produced new symbols, repeat the
	process.
	(mark_def_sites): Ignore operands that are in SSA form already.
	(insert_phi_nodes): Only add PHI nodes for variables in the
	VARS_TO_RENAME bitmap.
	(rewrite_block): Ignore PHI nodes that have been renamed already.
	(rewrite_and_optimize_stmt): Ignore operands that are already in
	SSA form.
	When propagating ADDR_EXPR set addr_expr_propagated_p to 'true'.
	Call propagate_copy when doing copy propagation.
	Call is_unchanging_value to decide if the RHS of an assignment is a
	constant.
	(rewrite_stmt): Ignore operands that are already in SSA form.
	(init_tree_ssa): Make external.
	Move initialization of local hash tables and bitmaps to
	rewrite_into_ssa.
	(remove_annotations_r): Don't special case MODIFY_EXPR nodes.
	(lookup_avail_expr): Call is_unchanging_value.
	(get_eq_expr_value): Likewise.

	* tree.h (enum tree_dump_index): Add TDI_must_alias.

	* cp/optimize.c (optimize_function): Don't call the tree optimizers
	  if -fdisable-tree-ssa is given.

	* doc/invoke.texi: Add documentation for -ftree-must-alias.

2003-07-07  Jeff Law  <law@redhat.com>

	* fold-const.c (nondestructive_fold_unary_to_constant: For BIT_NOT_EXPR
	make sure OP0 is a suitable constant before trying to fold it.

	* tree-cfg.c (handle_switch_fallthru): Set DECL_CONTEXT for
	newly created labels.

	* tree-cfg.c (move_outgoing_edges): New function.
	(merge_tree_blocks): Use it.
	(remove_bb): Remove the block from the pdom_info structures
	as well if they exist.
	(linearize_cond_expr): Move important edges from the then and
	else arms to BB as appropriately

	* tree-cfg.c (remove_stmt): When removing a COMPOUND_EXPR, make
	sure that any basic block pointers to the arms of the COMPOUND_EXPR
	are updated.

	* tree-cfg.c (make_goto_expr_edges): Computed gotos create
	abnormal edges.

2003-07-05  Daniel Berlin  <dberlin@dberlin.org>

	* tree-ssa-pre.c (defs_match_p): Check for copies of the same version.

2003-07-03  Frank Ch. Eigler  <fche@redhat.com>

	* tree-nomudflap.c (mf_marked_p, mf_mark): New dummy functions.

2003-07-03  Jeff Law  <law@redhat.com>

	* tree-ssa.c (lookup_avail_expr): Accept new argument containing the
	const_and_copies table.  All callers changed.  If we find the
	given expression in the availe expression hash table, then lookup
	the LHS of the hash table's entry in the const_and_copies_table.
	Do record type casts into the available expression table.

	* tree-nomudflap.c (mf_marked_p): Mark arguments as being unused.
	(mf_mark): Likewise.

	* c-decl.c (store_parm_decls): Strip away NOP_EXPRs when looking
	for hidden use variables.

2003-07-02  Frank Ch. Eigler  <fche@redhat.com>

	* varasm.c (build_constant_desc): Propagate mudflap marked-ness
	across constant copying.

2003-07-02  Daniel Berlin  <dberlin@dberlin.org>

	* tree-ssa-pre.c (tree_perform_ssapre): Don't optimize things with
	volatile ops or making aliased loads right now.
	(create_expr_ref): Mark the phi result of the new phi as having
	real refs.
	(finalize_1): Mark the new temp as having real refs.
	(repair_use_injury): Ditto.
	(code_motion): Ditto.

2003-07-01  Daniel Berlin  <dberlin@dberlin.org>

	* tree.h (struct tree_eref_common): Add injured flag.
	Add EREF_INJURED macro.

2003-07-01  Daniel Berlin  <dberlin@dberlin.org>

	* tree-flow-inline.h (stmt_ann): We have stmt_ann on E*_NODE's as well,
	so use is_essa_node as well.
	* tree-dfa.c (create_stmt_ann): Ditto.
	* tree.h (is_essa_node): Declare.
	* tree.c (is_essa_node): Define.

2003-07-01  Jason Merrill  <jason@redhat.com>

	* tree-cfg.c (prepend_stmt_to_bb): New fn.
	(bsi_insert_after): Add to the beginning of an empty block.

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

	* expr.c (expand_expr, case COND_EXPR): Correctly (?) handle
	cases where a containing block has a stack level.  Handle
	cases where one arm is a GOTO_EXPR and the other arm has
	side effects.

	* stmt.c (containing_blocks_have_cleanups_or_stack_level): New
	function.
	(any_pending_cleanups): Further simplification.
	* tree.h (containing_blocks_have_cleanups_or_stack_level): Prototype.

2003-06-30  Diego Novillo  <dnovillo@redhat.com>

	* tree-flow.h (struct tree_ann_common_d): Remove 'stmt' field.
	Update all users.
	(struct var_ann_d): Remove field 'has_real_refs'.  Update all callers
	with calls to SSA_NAME_HAS_REAL_REFS.
	Remove field 'occurs_in_abnormal_phi'.  Update all callers with
	calls to SSA_NAME_OCCURS_IN_ABNORMAL_PHI.
	* tree-flow-inline.h (var_ann): Only accept _DECL nodes.
	(stmt_ann): Only accept GIMPLE statements.
	(tree_stmt): Remove.  Update all users.

	* tree-cfg.c (linearize_cond_expr): Handle cases where BB doesn't
	have a postdominator.
	(find_contained_blocks): Do not look inside COND_EXPR_COND nor
	SWITCH_COND expressions.

	* tree-dfa.c (get_stmt_operands): Force virtual operands on
	ASM_EXPRs.
	(get_expr_operands): Handle SSA names when adding operands for
	memory tags.
	(add_stmt_operand): Handle SSA names.
	Move checks for volatile operands earlier in the code.
	(add_vdef): Re-format for readability.
	(create_var_ann): Only allow _DECL nodes.
	(create_stmt_ann): Only allow GIMPLE statements.
	(dump_variable): Handle SSA names.
	(dump_may_aliases_for): Likewise.
	(may_access_global_mem_p): Handle SSA names.
	(remove_phi_arg): If the argument removed was the last one with
	real references, update the LHS of the PHI node.
	(add_phi_arg): If the argument added has real references, propagate
	the attribute into the LHS of the PHI node.

	* tree-pretty-print.c (dump_generic_node): Only retrieve basic
	block information from GIMPLE statements.
	Always output the THEN and ELSE clauses of COND_EXPR nodes.

	* tree-simple.c (is_gimple_stmt): Accept PHI_NODEs.
	(is_gimple_id): Accept SSA_NAMEs.

	* tree-ssa-copyprop.c (copyprop_phi): If an argument is used as a
	real operand, propagate the attribute into the LHS of the PHI.

	* tree-ssa-live.c (create_ssa_var_map): Don't set 'used' flag on
	both the operand and the result of VDEFs.
	Only register PHI results and arguments that have been used as real
	operands.
	(calculate_live_on_entry): Fix formatting in debugging message.

	* tree-ssa.c (register_new_def): Add new argument
	'is_real_operand'.  If it's set, set SSA_NAME_HAS_REAL_REFS for the
	new name.  Update all callers.
	(rewrite_operand): Add new argument 'is_real_operand'.  If it's
	set, set SSA_NAME_HAS_REAL_REFS to the operand.
	(eliminate_build): Ignore PHI arguments and PHI results that have
	not been used in real operands.
	(rewrite_vdefs): Remove.  Update all users.
	(set_is_used): Don't handle SSA names.
	(coalesce_ssa_name): Ignore PHI arguments that have not had real
	references in the program.

	* tree.c (make_ssa_name): Update documentation.
	* tree.h (IS_EMPTY_STMT): Call integer_zerop instead of comparing
	against size_zero_node.
	(SSA_NAME_HAS_REAL_REFS): Define.
	(SSA_NAME_OCCURS_IN_ABNORMAL_PHI): Define.
	(struct tree_ssa_name): Add bitfields 'has_real_refs' and
	'occurs_in_abnormal_phi'.

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

	* c-simplify.c (gimplify_c_loop): Don't return a LOOP_EXPR for
	a do ... while (0) loop.

	* expr.c (expand_expr, case COND_EXPR): Be smarter about expanding
	a COND_EXPR with only one useful arm, which happens to be a GOTO_EXPR.

	* tree-cfg.c (remove_useless_stmts_and_vars): Don't remove user
	variables unless we're at -O2 or higher.

2003-06-30  Daniel Berlin  <dberlin@dberlin.org>

	* tree-ssa-pre.c (expr_phi_insertion): Stop optimizing the expression
	if we have > some very large number of ephi operands, as it will
	take an ungodly amount of memory and time.
	(pre_expression): Push/pop gc context so we can do gc collection
	in between expressions.
	Throw away expression info right after done optimizing it.

2003-06-30  Jason Merrill  <jason@redhat.com>

	* gimplify.c (gimplify_call_expr): Check PUSH_ARGS_REVERSED.

	* gimplify.c (gimplify_modify_expr): Also force a call with a
	possible nonlocal goto into a temporary.
	(gimplify_return_expr): Don't duplicate the MODIFY_EXPR.
	* tree-iterator.h (tsi_one_before_end_p): New fn.

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

	* fold-const.c (fold): Don't save_expr unless TREE_SIDE_EFFECTS.

2003-06-26  Diego Novillo  <dnovillo@redhat.com>

	* c-simplify.c (gimplify_stmt_expr): Handle statement-expressions
	that don't end in a non-void expression.  Emit a warning in that
	case.

2003-06-26  Daniel Berlin  <dberlin@dberlin.org>

	* tree-ssa-pre.c (fixup_domchildren): Rename from
	compute_domchildren, change to not use our own array.
	(domchildren): Remove variable.
	(insert_occ_in_preorder_dt_order_1): Use dom_children now.
	(insert_euse_in_preorder_dt_order_1): Ditto.
	(search_dt_preorder): Ditto.
	(handle_bb_creation): Fix to work properly.
	(tree_perform_ssapre): Remove remnants of domchildren.
	Redo dominator info if we have to due to a new block.

2003-06-26  Andrew MacLeod  <amacleod@redhat.com>

	* tree-cfg.c (handle_switch_split): Use a tree iterator to find the
	real split point rather than a block iterator.

2003-06-26  Jason Merrill  <jason@redhat.com>

	* tree-simple.c (is_gimple_stmt): Complete.

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

	* tree-cfg.c (remove_useless_stmts_and_vars): On the first
	iteration, remove unused variables from BIND_EXPRs.
	* tree-flow.h (var_ann_d): Add new field USED.
	(set_is_used): Prototype.
	(remove_useless_stmts_and_vars): Update prototype.
	* tree-ssa-live.c (create_ssa_var_map): Note which variables
	are used so that we can delete those which are not used.
	* tree-ssa.c (create_temp): Mark the new temporary as being used.
	(rewrite_out_of_ssa): Note if the call to remove_useless_stmts_and_vars
	is the first iteration or not.
	(set_is_used): New function.

	* c-decl.c (store_parm_decls): Variables and parameters on the
	pending_sizes chain have nonlocal uses.

2003-06-25  Daniel Berlin  <dberlin@dberlin.org>

	* tree-ssa-pre.c: Convert to ISO C.
	(handle_bb_creation): New function.
	(ephi_will_be_avail): Remove dead code.
	(finalize_1): Use handle_bb_creation, start to fix edge insertion
	related fun.
	(maybe_find_rhs_use_for_var): Stop using tree_stmt.
	(code_motion): Always get the temporary from the right place.

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

	* gimplify.c (gimplify_self_mod_expr): Add want_value parm.
	For postfix ops, make sure it returns an rvalue.
	(gimplify_expr): Copy a volatile reference into a temp.
	(create_tmp_var): Require a complete type.
	(create_tmp_alias_var): Use TYPE_VOLATILE on types.
	* tree-simple.c (is_gimple_stmt): Flesh out a bit.
	(is_gimple_val): Don't allow volatiles.

	* c-simplify.c (gimplify_expr_stmt): Don't insert a null pointer.

	* gimplify.c (gimplify_return_expr): Search through the gimple
	form for the interesting MODIFY_EXPR.
	(gimplify_modify_expr): Don't suppress posteffects if want_value.

2003-06-24  Diego Novillo  <dnovillo@redhat.com>

	* tree-dfa.c (struct dfa_stats_d): Remove obsolete fields
	num_tree_refs and size_tree_refs.  Update all users.
	(dump_dfa_stats): Also dump information about VUSE and VDEF
	operands.
	* tree-ssa.c (rewrite_vdefs): Dump information about VDEF operators
	promoted to real copies if -fdump-tree-optimized-details is given.

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

	* tree-ssa.c (avail_expr_eq): Verify types are the same before
	handing expressions to operand_equal_p.

	* tree-cfg.c (make_edges): Remove fake edges before building
	extra edges for TRY_FINALLY_EXPRs.  Delete unnecessary edges
	leaving the TRY block in a TRY_FINALLY_EXPR.
	(find_contained_blocks): Don't consider statements in the CATCH
	clause of a TRY_CATCH_EXPR when noting the last statement in
	the block.
	* tree-dfa.c (remove_phi_arg): If we removed the last PHI argument,
	then remove the entire PHI node.
	* tree-ssa-dce.c (stmt_useful_p): Consider the other EH related
	nodes useful as well (TRY_FINALLY_EXPR, TRY_CATCH_EXPR, and
	EH_FILTER_EXPR).

	* tree-cfg.c (remove_useless_stmts_and_vars): If the body of a
	TRY_CATCH_EXPR is empty, then the entire TRY_CATCH_EXPR can
	be safely removed.

	* tree-cfg.c (find_contained_blocks): Renamed from
	find_contained_blocks_and_edge_targets.  Remove targets
	bitmap argument and no longer record targets of edges.
	All callers changed.
	(make_edges): No longer need TRY_TARGETS bitmap.  Kill it.
	Simplify code which creates additional edges out of the TRY
	block and the FINALLY block in a TRY_FINALLY_EXPR.

2003-06-23  Diego Novillo  <dnovillo@redhat.com>

	* tree-alias-common.c (ptr_may_alias_var): Don't handle memory
	tags.
	* tree-dfa.c (struct alias_set_d): Remove.  Update all users.
	(alias_sets): Remove.  Update all users.
	(struct walk_state): Remove field aliased_objects_found.
	(struct alias_map_d): New.
	(addressable_vars): New local variable.
	(pointers): New local variable.
	(add_stmt_operand): Do not force aliased variables to be in virtual
	operands.
	(register_alias_set): Remove.  Update all users.
	(find_alias_for): Remove.  Update all users.
	(get_memory_tag_for): New local function.
	(num_referenced_vars): Remove.
	(num_aliased_objects): Remove.  Update all users.
	(aliased_objects): Remove.  Update all users.
	(aliased_objects_alias_set): Remove.  Update all users.
	(num_call_clobbered_vars): Remove.  Update all users.
	(dump_variable): Move code to dump aliases ...
	(dump_may_aliases_for): ... here.
	(debug_may_aliases_for): New function.
	(compute_may_aliases): Initialize 'addressable_vars' and 'pointers'
	arrays.
	(compute_alias_sets): Re-implement matching pointers with
	addressable variables.  Limit the size of may-alias sets.
	(may_alias_p): Re-implement to compare pointers against variables,
	instead of memory tags.
	(dump_alias_info): Re-implement to display pointers and addresable
	variables arrays.
	(add_referenced_var): Collect addressable variables and pointers.
	Share memory tags among pointers that may alias each other.
	* tree-flow.h (num_referenced_vars): Change to macro.
	(referenced_var): Likewise.
	(num_call_clobbered_vars): Likewise.
	(call_clobbered_var): Likewise.
	(dump_may_aliases_for): Declare.
	(debug_may_aliases_for): Declare.
	* tree-ssa.c (rewrite_vdefs): New local function.
	(rewrite_out_of_ssa): Call it.

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

	* tree-cfg.c (make_edges): Walk TRY_FINALLYs inner to outer and
	simplify creation of special edges related to the TRY_FINALLY_EXPR.

	* tree-cfg.c (remove_useless_stmts_and_vars): More aggressively
	remove TRY_CATCH_EXPRs and TRY_FINALLY_EXPRs.

	* tree-cfg.c (make_edges): Remove fake edges.
	(make_exit_edges): Mark edges from nonreturning functions to the
	exit block as being fake edges.

	* gimplify.c (gimplify_modify_expr): Don't create a new MODIFY_EXPR,
	reuse the existing one.

2003-06-23  Andrew MacLeod  <amacleod@redhat.com>

	* tree-cfg.c (find_insert_location): Default case should insert after
	the last stmt in the block.

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

	* Makefile.in (old-tree-inline.o): Remove rule.
	* old-tree-inline.c: Remove.

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

	* tree-cfg.c (make_ctrl_stmt_edges): Do not create bogus edges
	to the successor block of TRY_CATCH_EXPR, TRY_FINALLY_EXPR,
	CATCH_EXPR or EH_FILTER_EXPR nodes.

	* gimplify.c (gimplify_modify_expr): If the RHS of an MODIFY_EXPR
	might throw, then make sure its result goes into a temporary.

	* tree-cfg.c (handle_switch_split): Handle case where target
	block has only one statement (the case label itself).

2003-06-19  Diego Novillo  <dnovillo@redhat.com>

	* doc/invoke.texi: Add documentation for -ftree-dominator-opts
	that was missing from an earlier patch.

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

	* gimplify.c (gimplify_expr): Handle LABELED_BLOCK_EXPR
	and EXIT_BLOCK_EXPR.
	(gimplify_labeled_block_expr): New function.
	(gimplify_exit_block_expr): New function.

2003-06-18  Andrew MacLeod  <amacleod@redhat.com>

	* tree-cfg.c (EDGE_INSERT_LOCATION_BSI_AFTER): New location code.
	(cleanup_switch_expr_graph): Find default case correctly.
	(bsi_insert_after): Get BB from stmt when its avialble.
	(bsi_insert_before): Get BB from stmt when its avialble.
	(handle_switch_fallthru): New. Handle edge from switch to the fallthru.
	(handle_switch_split): Re-implement using new scheme.
	(find_insert_location): Use handle_switch_fallthru ().
	(bsi_insert_on_edge_immediate): Handle EDGE_INSERT_LOCATION_BSI_AFTER.
	* tree-iterator.h (tsi_last): New. Find last stmt in a chain.

2003-06-17  Daniel Berlin  <dberlin@dberlin.org>

	* tree-alias-common.c (find_func_aliases): Guard cast op
	properly.
	(ptr_may_alias_var): Small optimization to avoid calling
	decl_function_context so often.
	* tree-alias-ander.c (ander_simple_assign): Ignore if lhs == rhs.

2003-06-17  Steven Bosscher  <steven@gcc.gnu.org>

	* timevar.def (TV_TREE_BUILD_FUD_CHAINS): Remove.

2003-06-16  Diego Novillo  <dnovillo@redhat.com>

	* tree-ssa-ccp.c (DONT_SIMULATE_AGAIN): Define.
	(visit_phi_node): Don't do anything if the PHI node doesn't need to
	be simulated.
	If the PHI variable does not have real references, consider it
	VARYING.
	If the PHI node has a lattice value of VARYING, set
	DONT_SIMULATE_AGAIN.
	(visit_stmt): Don't do anything if the statement doesn't need to be
	simulated.
	Only visit conditional branches COND_EXPR and SWITCH_EXPR.
	If the statement doesn't produce a result mark it with
	DONT_SIMULATE_AGAIN.
	(visit_assignment): Remove unnecessary def_op() check.
	If the value is VARYING, mark the statement with
	DONT_SIMULATE_AGAIN.
	(visit_cond_stmt): Remove unnecessary is_ctrl_stmt() check.
	If the predicate is VARYING, mark the statement with
	DONT_SIMULATE_AGAIN.
	(initialize): Clear DONT_SIMULATE_AGAIN flag for every statement
	and PHI node.
	(likely_value): Get statement operands after checking if it makes
	aliased loads or has volatile operands.

2003-06-16  Jeff Law  <law@redhat.com>
	    Jason Merrill  <jason@redhat.com>

	* except.c (enum eh_region_type): Don't declare the enumeration
	members here.  Instead do it in except.h.
	(expand_eh_hander): Use expr_first instead of open-coding it.
	* except.h (enum eh_region_type): Define the enumeration memebers
	here.
	* tree-cfg.c (last_exec_block): Break out from make_edges.
	(could_trap_p): No longer static.
	(get_eh_region_type): New function.
	(make_try_expr_blocks): Keep the whole TRY_CATCH_EXPR or
	TRY_FINALLY_EXPR instead of just the handler part in the
	EH_STACK varray.  For a cleanup, record which cleanup higher
	in the EH_STACK it can reach.
	(make_edges): Use last_exec_block.
	(make_ctrl_stmt_edges): Thread cleanups as needed.
	(compute_reachable_eh):  Use get_eh_region_type.  Properly
	track when we can skip cleanups.  Skip cleanups when possible.
	* tree-flow.h (could_trap_p): Prototype.

2003-06-16  Andrew Macleod  <amacleod@redhat.com>

	* tree-cfg.c (find_insert_location): Check for control_altering stmts,
	and abort if its an unrecognized BB ending stmt.
	(bsi_commit_first_edge_insert): Rename to bsi_insert_on_edge_immediate,
	externalize, and change the interface to an on-demand inserter.
	(bsi_commit_edge_inserts): Call bsi_insert_on_edge_immediate().
	* tree-flow.h (bsi_insert_on_edge_immediate): Prototype.
	* tree-pretty-print.c (dump_block_info): Add 'ab' for abnormal edges.
	* tree-ssa-dce.c (process_worklist): Use sparse bitmaps.
	* tree-ssa-live.c (calculate_live_on_entry): Abort if ssa_name has a
	definition, but is also live on entry.
	* tree-ssa.c (coalesce_ssa_name): Call abort() instead of error(), and
	provide more detailed info.
	(rewrite_out_of_ssa): Provide CFG dumps before and after rewritting.

2003-06-16  Frank Ch. Eigler  <fche@redhat.com>

	* tree-mudflap.c (mf_mark): Use GC-compatible htab_create_ggc.

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

	* tree-ssa-ccp.c (visit_phi_node): If the PHI is already known
	to be varying, don't recompute its value.

2003-06-14  Jeff Law  <law@redhat.com>
	    Jason Merrill <jason@redhat.com>

	* tree-cfg.c (make_blocks): Do not return early if presented
	with an empty statement.
	(make_ctrl_stmt_edges):  Do not try to optimize an empty TRY
	block in a TRY_FINALLY_EXPR.  Simplify TRY_FINALLY_EXPR,
	TRY_CATCH_EXPR, CATCH_EXPR, and EH_FILTER_EXPR now that empty
	statements are no longer shared.

2003-06-14  Kazu Hirata  <kazu@cs.umass.edu>

	* tree-ssa-pre.c: Fix a comment typo.

2003-06-13  Diego Novillo  <dnovillo@redhat.com>

	* tree-dfa.c (get_stmt_operands): Abort if the statement is a
	variable.
	(create_var_ann): Abort if the variable is not a _DECL node.

2003-06-13  Frank Ch. Eigler  <fche@redhat.com>

	* tree-mudflap.c (mudflap_c_function): Change calling conventions so
	as to return the instrumented function body rather than changing the
	given fndecl in place.  Gimplify at the very end, for cosmetic
	reasons.
	* tree-mudflap.h, tree-nomudflap.c: Corresponding changes.
	* c-decl.c (c_expand_body_1): Call mudflap_c_function just before
	rtl expansion of function body; don't interfere with inlining.

2003-06-13  Diego Novillo  <dnovillo@redhat.com>

	* c-simplify.c: Fix typo in previous change.

2003-06-13  Diego Novillo  <dnovillo@redhat.com>

	* c-common.c, c-common.h, c-decl.c, c-lang.c, c-simplify.c,
	flags.h, gimplify.c, langhooks-def.h, langhooks.c, langhooks.h,
	simple-break-elim.c, simple-goto-elim.c, toplev.c,
	tree-alias-common.c, tree-cfg.c, tree-dfa.c, tree-dump.c,
	tree-inline.c, tree-mudflap.c, tree-simple.c, tree-simple.h,
	tree-ssa-ccp.c, tree-ssa-pre.c, tree-ssa.c, tree.h, doc/invoke.texi:
	Rename SIMPLE to GIMPLE everywhere.

2003-06-13  Andrew MacLeod  <amacleod@redhat.com>

	* tree-cfg.c (bsi_commit_first_edge_insert): Only consider non-abnormal
	edges when determining whether an edge needs to be split.

	* tree-ssa-dce.c (process_worklist): When checking for GOTO and
	COND_EXPR's that are necessary, check each BB's predecessors only once.

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

	* tree-ssa.c (avail_expr_eq): Add some checking code to
	detect when equal expressions have different hash values.

	* tree.c (iterative_hash_expr): Don't hash types associated
	with conversions.  Instead hash on the signedness of the
	toplevel object and the operand of the conversion.

	* Makefile.in (gimplify.o): Depend on $(RTL_H).  Ugh.
	* gimplify.c: Include "rtl.h".
	(simplify_call_expr): Use call_expr_flags and check for ECF_CONST
	rather than checking bits in the tree node directly.

	* fold-const.c (operand_equal_p): CALL_EXPRs with side effects
	are never equal.

2003-06-11  Frank Ch. Eigler  <fche@redhat.com>

	* gcc.c (MFWRAP_SPEC): Always wrap main().
	* tree-mudflap.c (mudflap_enqueue_decl): Mark enqueued decls
	to prevent their repeated processing.

2003-06-11  Daniel Berlin  <dberlin@dberlin.org>

	* tree-ssa-pre.c: add graph_dump_file, graph_dump_flags.
	(finalize_1): Modify to use temporary in expr_info structure,
	remove temporary from arguments.
	Use bsi_insert_on_edge for ephi insertions.
	Set EREF_TEMP on inserted euses.
	(repair_phi_injury): Note (to dump file)  injuries we have
	repaired already.
	(repair_use_injury): Ditto.
	(repair_euse_injury): Ditto.
	(count_stmts_in_bb): Count both forwards and backwards, and make
	sure the numbers agree. This makes sure both the head and end are
	updated properly.
	(code_motion): Use the EREF_TEMP, rather than calculating the
	reaching def, when possible, because it's faster.
	Add the phi we created when we insert the ephi.  We should always
	be able to get the reaching def of the ephi from EREF_TEMP (since
	the args should have already been inserted, or in the case of
	phi's, have a phi already allocated), so abort if we can't.
	(create_expr_ref): Take expr_info parameter.  Make a phi for the
	ephi's, but don't add to the bb yet. Update all callers.
	(get_default_def): New function.
	(get_reaching_def): Use it to find the default def when we hit the
	top of the dom tree.
	(struct expr_info): Add temp.
	(new_rename_1): Dump out occurrences after rename 1, but before
	rename 2.
	(requires_edge_placement): Now that we can insert on edges, we
	shouldn't need this, so make it always return false.
	Will remove unless something bad comes up.
	(pre_expression): Start working on dumping the redundancy graph.

	* tree.h (struct treeeref_common): Add the temp member.
	Add EREF_TEMP macro.
	(tree_dump_index): Reorder to match actual optimization order.
	Add TDI_predot.

	* tree-dump.c: Ditto.

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

	* gimplify.c (simplify_call_expr): Clear TREE_SIDE_EFFECTS for
	calls to "const" functions.

	* tree-inline.c (expand_call_inline): Recalculate TREE_SIDE_EFFECTS
	properly when inlining gimplified functions.

	* fold-const.c (operand_equal_p): Handle CALL_EXPRs.

	* tree-cfg.c (first_exec_block): Kill.
	(make_edges): Use bb_for_stmt rather than first_exec_block.
	(make_ctrl_stmt_edges, make_exit_edges): Likewise.
	(make_loop_expr_edges, make_cond_expr_edges): Likewise.
	(successor_block): Don't skip empty statements.

	* tree-ssa.c (rewrite_and_optimize_stmt): Do not special case
	CALL_EXPRs they're caught by the TREE_SIDE_EFFECTS test.

	* tree-ssa.c (rewrite_and_optimize_stmt): Improve/correct setting of
	may_optimize_p.  Simplify later code knowing may_optimize_p is
	correctly set.
	(avail_expr_hash): Do not use iterative_hash_object or deal with
	SSA names for real operands.  Instead use iterative_hash_expr
	which handles both.
	(avail_expr_eq): Use operand_equal_p to test for equality.

2003-06-11  Steven Bosscher  <steven@gcc.gnu.org>

	* tree-flow.h, tree-ssa-ccp.c, tree-ssa-copyprop.c,
	tree-ssa-dce.c, tree-ssa-live.c, tree-ssa-live.h:
	Convert function prototypes to ISO C.

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

	* toplev.c (parse_options_and_default_flags): Fix typo in last change.

	* gimplify.c (simplify_expr, case BIT_FIELD_REF): Make sure
	to call recalculate_side_effects after gimplifying the
	operands.

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

	* toplev.c (flag_tree_dom): New variable.
	(f_options): Add new entry for -ftree-dominator-opts.
	(parse_options_and_default_flags): Enable flag_tree_dom for
	-O1 and higher.  At -O2 and higher, disable flag_tree_dom is
	SSA-PRE is also specified.
	* flags.h (flag_tree_dom): Declare.
	* doc/invoke.texi: Document -ftree-dominator-opts.
	* tree-ssa.c (rewrite_block): Disable tracking of available
	expressions when not doing dominator optimizations.
	Call rewrite_stmt when not doing dominator optimizations.
	Otherwise, call rewrite_and_optimize_stmt.
	(rewrite_stmt): Don't optimize the statement.  Just rename.
	(rewrite_and_optimize_stmt): Optimize the statement while rewriting
	its operands.
	(lookup_avail_expr): Update comments.

2003-06-10  Andrew Haley  <aph@redhat.com>

	* c-simplify.c (c_simplify_stmt): case ASM_STMT: Ensure qualifiers
	come from input statement.

2003-06-09  Andrew MacLeod  <amacleod@redhat.com>

	* tree-cfg.c (handle_switch_split): Update PHI nodes when splitting.
	(tree_split_edge): Update PHI nodes in destination block.

2003-06-09  Steven Bosscher  <steven@gcc.gnu.org>

	* basic-block.h, tree-dfa.c, tree-ssa.c, tree-cfg.c,
	tree-flow.h: Convert function prototypes to ISO C.

2003-06-09  Daniel Berlin  <dberlin@dberlin.org>

	* tree-cfg.c (bsi_commit_edge_inserts): Fix computation of
	new_blocks.

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

	* tree-cfg.c (handle_switch_split): Don't allocate basic block
	annotations more than once.
	(bsi_commit_first_edge_insert): Likewise.

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

	* tree-cfg.c (could_trap_p): New function.
	(stmt_ends_bb_p): Handle flag_non_call_exceptions.
	(make_exit_edges): Handle flag_non_call_exceptions.
	(is_ctrl_altering_stmt): Handle flag_non_call_exceptions.
	* tree-inline.c (walk_tree): Add case for CHAR_TYPE.
	* tree-ssa-dce.c (stmt_useful_p): Keep all CATCH_EXPRs.

2003-06-05  Jason Merrill  <jason@redhat.com>

	* stmt.c (asm_op_is_mem_input): New fn.
	* tree.h: Declare it.
	* gimplify.c (simplify_asm_expr): Call resolve_asm_operand_names.
	Use is_simple_modify_expr_lhs for mem input ops.

2003-06-05  Frank Ch. Eigler  <fche@redhat.com>

	* c-mudflap.c (mflang_register_call): Give the synthetic decl
	undefined (not zero) size.

2003-06-05  Frank Ch. Eigler  <fche@redhat.com>

	* tree-mudflap.c (mx_flag): Remove.  Update callers to use mf_mark.
	(TREE_MUDFLAPPED_P): Remove.  Update callers to use mf_marked_p.
	(mf_mark, mf_marked_p): Replacement functions to replace old node
	marking based on tree flag-bits.
	(mf_mostly_copy_tree_r): Preserve markedness across copies.
	* tree-mudflap.h: Add new decls
	* c-mudflap.c (mx_flag): Remove.  Update callers to use mf_mark.

2003-06-04  Diego Novillo  <dnovillo@redhat.com>

	* tree-dfa.c (add_stmt_operand): Always consider non-scalar types
	virtual operands.

2003-06-04  Andrew MacLeod  <amacleod@redhat.com>

	* toplev.c (parse_options_and_default_flags): Turn tree_copyprop on by
	default.
	* tree-cfg.c (linearize_control_structures, linearize_cond_expr,
	replace_stmt, merge_tree_blocks, remap_stmts): Fix PROTOS.
	(find_insert_location): Add additional basic block parameter. Handle
	switch stmts.
	(handle_switch_split): New. Split edges to switch labels.
	(bsi_commit_first_edge_insert): Add extra parameter to
	find_insert_location call. Fix split block chaining in THEN & ELSE.
	* tree-ssa-live.c (calculate_live_on_entry): Process all PHI def's
	after all the arguments have been processed.
	* tree-ssa.c (struct ssa_stats_d, struct loops *loops, var_is_live,
	rewrite_into_ssa): Remove old UNSSA code.
	(rewrite_block): Remove stmt is rewrite_stmt returns 1.
	(assign_vars): Remove abort and enable overlapping live ranges.
	(replace_variable): New. Replace SSA name with the partition variable.
	(rewrite_out_of_ssa): Use replace_variable().
	(dump_tree_ssa_stats): Remove old UNSSA code.
	(rewrite_stmt): Return 1 if stmt should be deleted. Remove old
	UNSSA code.

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

	* gimplify.c (simplify_call_expr): Move code to mark MD builtins
	non-simplifiable...
	* tree-simple.c (is_simple_call_expr): ... here.

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

	* c-parse.in: Fix botched merge.

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

	* tree-mudflap.c (MARK_TREE_MUDFLAPPED, TREE_MUDFLAPPED):
	Use TREE_VISITED instead of TREE_BOUNDED.
	* c-mudflap.c (TREE_MUDFLAPPED): Likewise.
	* tree-pretty-print.c (dump_generic_node): Remove
	references to TYPE_QUAL_BOUNDED.

2003-06-03  Jason Merrill  <jason@redhat.com>

	* gimplify.c (simplify_cond_expr): Call truthvalue_conversion
	before invert_truthvalue.

2003-06-02  Daniel Berlin  <dberlin@dberlin.org>

	* tree-dfa.c (compute_may_aliases): Call delete_alias_vars whenever we
	call create_alias_vars.

	* tree-alias-common (ptr_may_alias_var): Cleanup determination of
	global vars and whatnot.

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

	* Makefile.in (tree-ssa.o, tree-cfg.o): Add dependency on cfgloop.h
	(tree-optimize.o): Remove dependency on cfgloop.h.
	* basic-block.h (struct basic_block_def): Fix documentation for
	field 'loop_father'.
	* tree-dfa.c (add_referenced_var): Fix type of element
	pushed into aliased_objects_alias_set.
	* tree-optimize.c: Don't include cfgloop.h
	(optimize_function_tree): Move code to initialize loop optimizer...
	* tree-cfg.c (build_tree_cfg): ... here.
	* tree-ssa.c: Include cfgloop.h.
	(loops): New file local variable.
	(rewrite_into_ssa): Initialize/finalize loop optimizer.
	(rewrite_stmt): Call var_is_live when processing redundant
	assignments to the same LHS.
	(var_is_live): Add heuristic to discover overlapping definitions in
	loops that do not have PHI nodes for VAR at the loop header.

2003-06-02  Jason Merrill  <jason@redhat.com>

	* gimplify.c (simplify_expr): Only allow a cast from a 'val'.
	* tree-simple.c (is_simple_cast): Likewise.

2003-06-02  Andrew MacLeod  <amacleod@redhat.com>

	* tree-cfg.c (bsi_insert_before): Update end of block pointer if we
	inserted before the last stmt in a block. (The container changed).
	* tree-ssa.c (elim_backward): Inserting copy should be within
	conditional check.
	(elim_create): Only select one bit instead of the all.

2003-06-01  Jason Merrill  <jason@redhat.com>

	* Makefile.in: Remove lots of -Wno-error targets.

	* tree-simple.c (recalculate_side_effects): Check TREE_THIS_VOLATILE.

	* gimplify.c (simplify_compound_lval): Call
	recalculate_side_effects on each of the subexpressions.

	* expr.c (expand_expr) <COND_EXPR>: Use the if-statement code if
	it's void.

2003-06-01  Daniel Berlin  <dberlin@dberlin.org>

	* tree-alias-common.c: Remove setting of DECL_CONTEXT in temp vars,
	it's done in create_tmp_alias_var for us.
	(ptr_may_alias_var): Check if the variables are memory tags, and get
	the associated pointers if they are.

2003-05-30  Frank Ch. Eigler  <fche@redhat.com>

	* tree-mudflap.c (mudflap_c_function, enqueue_constant, enqueue_decl):
	Rework dumping logic.

2003-05-27  Jason Merrill  <jason@redhat.com>

	* tree-ssa.c (avail_expr_hash): Simplify by using iterative_hash_expr
	in more places.
	* tree.c (iterative_hash_expr): Handle SSA_NAME.

2003-05-29  Jeff Law  <law@redhat.com>

	* tree-ssa.c (rewrite_stmt): Detect and remove redundant
	memory loads.
	(avail_expr_hash): Use iterative_hash_expr, not iterative_hash_object
	as needed.

2003-05-27  Jason Merrill  <jason@redhat.com>

	* gimplify.c (shortcut_cond_expr): Avoid jumps to jumps.

2003-05-26  Jason Merrill  <jason@redhat.com>

	* c-simplify.c (simplify_switch_stmt): A SWITCH_EXPR also gets the
	source location of its first line.

2003-05-24  Diego Novillo  <dnovillo@redhat.com>

	Do not consider INDIRECT_REF nodes to be variables.

	* gimplify.c (create_tmp_alias_var): Allow temporaries of
	ARRAY_TYPE to be created.
	Create new temporaries with function scope.
	Don't call build_type_variant.
	Mark the temporary volatile if its type is volatile.

	* tree-dfa.c: Change every function that received a variable and
	its base symbol to just receive the variable.  Update all callers.
	(struct alias_set_d): Remove field 'tag_sym'.
	Add documentation for fields.
	(struct walk_state): Add field 'is_indirect_ref'.
	Add documentation for fields.
	(opf_ignore_bp): Remove.  Update all users.
	(aliased_objects_base): Remove.  Update all users.
	(get_stmt_operands): If the statement had virtual operands, do not
	scan them again.
	(get_expr_operands): Handle INDIRECT_REF nodes by adding an operand
	for the memory tag represented and a use for the base pointer.
	Don't add VUSE operands for pointer arguments to functions.
	Force a virtual operand when processing ADDR_EXPR nodes.
	(add_stmt_operand): If the variable is an alias tag, always add it
	as a virtual operand.
	Remove code to handle INDIRECT_REF nodes.
	Move code to determine if a pointer may point to global memory to
	find_vars_r.
	Set has_volatile_ops flag in the statement when adding operands for
	globals and local statics.
	If the variable is an alias tag, mark the statement as making
	aliased loads or stores.
	(set_def): Mark the variable as having real references.
	(add_use): Likewise.
	(add_vdef): Remove code to re-add previous virtual operands.
	If PREV_VOPS is set, don't add a new virtual operand.
	(add_vuse): Likewise.
	(dump_variable): Show annotation bitfields 'mem_tag',
	'occurs_in_abnormal_phi', 'is_alias_tag' and 'is_stored'.
	(compute_may_aliases): Initialize walk_state.is_indirect_ref to 0.
	(compute_alias_sets): Don't remove alias sets with exactly one
	entry.
	(register_alias_set): Re-implement to support memory tags instead
	of INDIRECT_REF nodes.  Document algorithm.
	(find_alias_for): Likewise.
	(may_alias_p): Likewise.
	(add_may_alias): Likewise.
	(find_vars_r): If a pointer assignment is found and the RHS of the
	assignment may access global memory, mark the pointer as pointing
	to global memory.
	Handle INDIRECT_REF nodes by marking the base pointer as
	dereferenced.
	Do not share INDIRECT_REF nodes.
	(add_referenced_var): Don't handle INDIRECT_REF nodes.
	If called from a store operation, mark the variable as stored.
	By default mark the variable as not having real references.
	When processing a pointer that has been dereferenced, create a
	memory tag for the pointer.
	(add_indirect_ref_var): Remove.  Update all callers.
	(get_virtual_var): Don't handle INDIRECT_REF nodes.
	(find_hidden_use_vars_r):

	* tree-flow-inline.h (get_var_ann): New function.  Change all
	functions that called var_ann and create_var_ann to call
	get_var_ann.
	(get_stmt_ann): Likewise.
	(set_indirect_ref): Remove.  Update all callers.
	(indirect_ref): Remove.  Update all callers.
	(create_indirect_ref): Remove.  Update all callers.

	* tree-flow.h (struct var_ann_d): Remove fields 'is_loaded',
	'unused' and 'indirect_ref'.
	Add fields 'mem_tag', 'is_mem_tag', 'is_alias_tag' and
	'has_real_refs'.
	(get_var_ann, get_stmt_ann): Declare.
	(create_indirect_ref, set_indirect_ref, indirect_ref): Remove.

	* tree-pretty-print.c (dump_generic_node): Don't handle
	INDIRECT_REF nodes inside SSA_NAME nodes.

	* tree-simple.c (get_base_symbol): Don't handle INDIRECT_REF nodes.
	(is_simple_unary_expr): Don't call STRIP_NOPS.

	* tree-ssa-copyprop.c (get_original): Don't handle INDIRECT_REF
	nodes.  Allow pointers to be copy propagated.

	* tree-ssa-dce.c (need_to_preserve_store): Don't handle
	INDIRECT_REF nodes.

	* tree-ssa-live.c (create_ssa_var_map): Only process variables that
	have real references.

	* tree-ssa.c: Update documentation regarding INDIRECT_REF nodes.
	(update_indirect_ref_vuses): Remove.  Update all users.
	(update_pointer_vuses): Remove.  Update all users.
	(MAY_COPYPROP_P): Remove.  Update all users.
	(create_temp): Don't handle INDIRECT_REF nodes.
	(coalesce_ssa_name): Ignore variables that have no real references.
	(rewrite_stmt): Mark the statement modified if a new copy or
	constant was propagated into it.
	Don't special-case pointers.
	(rewrite_operand): Don't handle INDIRECT_REF nodes.
	* tree.h (SSA_VAR_P): Remove.  Update all users.
	(SSA_DECL_P): Rename to SSA_VAR_P.

2003-05-22  Jeff Law  <law@redhat.com>

	* gimplify.c (simplify_expr): Avoid gimplifying expressions which
	are already in gimple form.
	* tree-simple.c (is_simple_constructor): No longer treat TREE_STATIC
	constructors specially.
	(is_simple_addr_expr_arg): If we're taking the address of a label
	for the first time, then the ADDR_EXPR is not in gimple form.

2003-05-22  Jason Merrill  <jason@redhat.com>

	* tree-cfg.c (compute_reachable_eh): Don't skip cleanups.

	* tree-dfa.c (add_referenced_var): Read-only INDIRECT_REFs can
	also be clobbered by function calls.

2003-05-22  Jeff Law  <law@redhat.com>

	* expr.c (convert_move): Avoid making silly copies.
	(expand_expr, case BIND_EXPR): Correctly determine when the
	result of the BIND_EXPR will not be used.

2003-05-21  Jason Merrill  <jason@redhat.com>

	* tree-cfg.c (compute_reachable_eh): Handle multiple CATCH_EXPRs.

	* builtins.c (simplify_builtin_next_arg): Split out from...
	(expand_builtin_next_arg): ...here.
	(simplify_builtin_va_start): Split out from...
	(expand_builtin_va_start): ...here.
	(simplify_builtin): Call it.
	* gimplify.c (simplify_call_expr): If simplify_builtin worked,
	just return.

2003-05-20  Jason Merrill  <jason@redhat.com>

	* gimplify.c (shortcut_cond_expr, shortcut_cond_r): Rewrite.
	(simplify_cond_expr): Also invert ifs with no 'then'.
	(build_and_jump): New fn, split out from...
	(gimplify_exit_expr): ...here.  Don't bother gimplifying the
	condition.

	* gimplify.c (simplify_save_expr): Add post-effects to the
	postqueue.

	* gimplify.c (mostly_copy_tree_r): Don't unshare constants.

2003-05-20  Jeff Law  <law@redhat.com>

	* expr.c (expand_expr, case COND_EXPR): Avoid useless RTL generation
	when the THEN or ELSE arm is empty.

	* tree-cfg.c (make_loop_expr_blocks): Do not accept next_block_link
	as an argument, make it a local variable.  Callers changed.

	* tree-cfg.c (remove_useless_stmts_and_empty_vars): Eliminate
	GOTO_EXPRs which jump to the next statement occuring in an
	outer control/block structure nest.

2003-05-20  Diego Novillo  <dnovillo@redhat.com>

	* tree-ssa-ccp.c (set_rhs): Fix typo in handling of
	RETURN_EXPR nodes.

2003-05-19  Daniel Berlin  <dberlin@dberlin.org>

	* tree-alias-common.c (alias_get_name): Handle unnamed variables once
	and for all.

2003-05-19  Jeff Law <law@redhat.com>

	* tree-ssa-dce.c (remove_conditional): If the conditional's block
	has no post dominator in the CFG, then wire it to the exit node.
	Avoid unnecessary check of bb->succ.

2003-05-17  Daniel Berlin  <dberlin@dberlin.org>

	* tree-pretty-print.c (MASK_POINTER): Parameter is P, not node.

2003-05-17  Daniel Berlin  <dberlin@dberlin.org>

	* tree-alias-common.c (get_alias_var): Handle REFERENCE_EXPR.
	(find_func_aliases): Ditto.
	(get_alias_var): Use POINTER_TYPE_P.

2003-05-16  Frank Ch. Eigler  <fche@redhat.com>

	* gcc.c (cc1_options): Correct "-fmudflapth" handling.
	* tree-mudflap.c (mudflap_c_function, mf_build_check_statement_for):
	Use locally cached mask/shift values only in single-threaded mode.

2003-05-16  Daniel Berlin  <dberlin@dberlin.org>

	* tree-alias-common.c (ptr_may_alias_var): Fix DECL_CONTEXT
	checking.

2003-05-16  Andrew MacLeod  <amacleod@redhat.com>

	* tree-flow.h (ssa_make_edge): Remove prototype.
	* tree-ssa-dce.c (remove_dead_stmt): Change comment about removing
	conditionals.
	(remove_conditional): Don't update PHI nodes or call ssa_make_edge.
	* tree-ssa.c (ssa_make_edge): Remove.

2003-05-16  Jeff Law  <law@redhat.com>

	* tree-cfg.c (remove_useless_stmts_and_vars): Handle case where
	both arms of an if-then-else simply jump to the same location.

	* tree-ssa-ccp.c (get_rhs): Correctly handle MODIFY_EXPR embedded in
	a RETURN_EXPR.
	(set_rhs): Likewise.

2003-05-15  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>

	* Makefile.in (regmove.o-warn): Change to -Wno-error.

2003-05-15  Andrew MacLeod  <amacleod@redhat.com>

	* tree-cfg.c (enum find_location_action): Enum for find_insert_location.
	(bsi_insert_before): Handle insert at start of a BB and update pointers
	from parents if appropriate.
	(find_insert_location): Handle COND_EXPR properly. Return
	an enum type indicating what action to take on the returned value.
	(bsi_commit_first_edge_insert): Use new returned action.

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

	* tree-cfg.c (make_edges): Factor out loop invariants from
	code to insert edges from the TRY to the FINALLY block.
	Avoid creating unnecessary edges from the end of the
	FINALLY block back to the start of the FINALLY block.

2003-05-15  Diego Novillo  <dnovillo@redhat.com>

	* tree-ssa.c (rewrite_out_of_ssa): Undo previous patch.

2003-05-15  Diego Novillo  <dnovillo@redhat.com>

	* tree-ssa.c (rewrite_out_of_ssa): Don't dump the optimized
	function after the SSA->normal pass.

2003-05-14  Toon Moene  <toon@moene.indiv.nluug.nl>

	* Makefile.in: Add additional -Wno-error targets for Alpha.

2003-05-13  Jason Merrill  <jason@redhat.com>

	* gdbinit.in (pgs, pge): New macros.

	Implement expression temporary optimization.
	* gimplify.c (gimplify_ctx): Add temp_htab field.
	(push_gimplify_context): Initialize it.
	(pop_gimplify_context): Destroy it.
	(simplify_expr): If there's no internal postqueue, generate an
	expression temporary.
	(gimple_tree_hash, gimple_tree_eq): New fns.
	(create_tmp_from_val, lookup_tmp_var): New fns.
	(get_formal_tmp_var): New fn.
	(internal_get_tmp_var): New fn.
	(get_initialized_tmp_var): Use it.
	* tree-simple.h: Declare it.

	* gimplify.c (simplify_cond_expr): Reorganize.
	(shortcut_cond_expr, shortcut_cond_r): New fns.
	(build_and_jump): New fn.
	(gimplify_exit_expr): Use it.

	* gimplify.c (simplify_expr): Do better at stripping unnecessary
	NOPs.  Tidy GOTO_EXPR handling.  Don't allow NON_LVALUE_EXPR.
	* tree-simple.c (is_simple_modify_expr): Don't allow NON_LVALUE_EXPR.
	(is_simple_binary_expr, is_simple_condexpr): Likewise.
	(is_simple_unary_expr, is_simple_compound_lval): Likewise.
	(is_simple_id): Likewise.

	* tree-ssa.c (rewrite_stmt): Discard redundant assignments.
	(avail_expr_eq): Don't test ops1 == ops2.
	(avail_expr_hash): Use iterative_hash_object.

2003-05-13  Jeff Law  <law@redhat.com>

	* tree-cfg.c (cleanup_tree_cfg): Update comments.   Set repeat
	anytime we remove a control structure.

	* tree-flow.h (struct var_ann_d): New field occurs_in_abnormal_phi.
	* tree-ssa.c (MAY_COPYPROP_P): Do not allow copy propagations
	if either argument occurs in an abnormal phi.
	* tree-dfa.c (add_phi_arg): Set occurs_in_abrnomal_phi as needed.
	* tree-ssa-copyprop.c (copyprop_stmt): Do not allow copy
	propagations if either argument occurs in an abnormal phi.
	(copyprop_phi): Likewise.

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

	* c-common.h (STATEMENT_CODE_P): Use size_t cast instead
	of int.
	(INIT_STATEMENT_CODES): Change type of local variable i to
	size_t.

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

	* c-pretty-print.c (dump_c_node): Call CONSTRUCTOR_ELTS
	to access the operand of a CONSTRUCTOR node.
	* tree-pretty-print.c (dump_generic_node): Likewise.

2003-05-11  Diego Novillo  <dnovillo@redhat.com>

	* c-simplify.c (simplify_if_stmt): Replace calls to
	warning_with_file_and_line with warning.

2003-05-12  Frank Ch. Eigler  <fche@redhat.com>

	* toplev.c (lang_independent_options): Add "-fmudflapth".
	* flags.h (flag_mudflap): Document meaning of >1 value.
	* gcc.c (MFWRAP_SPEC, MFLIB_SPEC): Add -fmudflapth support.
	(cpp_unique_options, cc1_options): Ditto.

2003-05-10  Sebastian Pop  <s.pop@laposte.net>

	* gimplify.c (simplify_expr): Replace CONST_DECL with its DECL_INITIAL.

2003-05-09  Sebastian Pop  <s.pop@laposte.net>

	* tree-optimize.c (optimize_function_tree): Clarify the use of the
	loop analyzer.

2003-05-09  Jeff Law  <law@redhat.com>

	* c-simplify.c (simplify_cleanup): Remove code which optimizes
	TRY_FINALLY and TRY_CATCH.  It doesn't trigger.

	* tree-cfg.c (remove_useless_stmts_and_vars): Optimize away
	TRY_CATCH and TRY_FINALLY blocks when possible.

2003-05-09  Diego Novillo  <dnovillo@redhat.com>

	* tree-pretty-print.c (dump_generic_node): CONSTRUCTOR
	nodes have only one operand now.

2003-05-08  Andrew MacLeod  <amacleod@redhat.com>

	* tree-cfg.c (pdom_info): New file level static.
	(cleanup_tree_cfg): Free dominance info, if it was used.
	(bsi_replace): New. Replace a stmt with a new one.
	(linearize_cond_expr): Use post dominator info to determine is a
	conditional can be safely removed.
	(find_insert_location): New. Determine where to insert a new stmt that
	is placed on a split edge.
	(bsi_commit_first_edge_insert): Use find_insert_location to determine
	where to link a stmt when splitting an edge.
	(merge_tree_blocks): When deleting a basic block, remove it from the
	dominance structure if it exists.
	* tree-dfa.c (add_stmt_operand): Don't rename local statics. Treat
	them just like globals.
	* tree-flow.h (struct var_ann_d): Add root_var_processed bit and
	root_index fields.
	* tree-ssa-dce.c (process_worklist): Mark conditions feeding PHI's as
	necessary as well.
	(remove_dead_phis): Add missing debug information.
	* tree-ssa-live.c (var_union): Handle combining partitions when one
	has a root_variable as a representative.
	(compact_var_map): Add comments and use flags.
	(init_root_var): Use new root_var fields in struct var_ann_d.
	(dump_root_var): Send output to specified file, not stderr.
	(dump_var_map): Remove dump_flag parameter & some grotesque debug info.
	* tree-ssa-live.h (VAR_ANN_ROOT_INDEX): Define.
	(VARMAP_NORMAL, VARMAP_NO_SINGLE_DEFS): Define flags for compact_var_map.
	(var_to_partition_to_var): Return NULL if not in a partition.
	(find_root_var): Use VAR_ANN_ROOT_INDEX.
	* tree-ssa.c (insert_copy_on_edge): Add listing info.
	(coalesce_ssa_name): Coalesce live-on-entry variables to their root.
	Coalesce partitions across abnormal edges.
	(assign_vars): Remove redundant initialization code. Handle root_vars
	which have already been coalesced to a partition.
	(rewrite_out_of_ssa): Add debug info & remove PHI nodes when processed.
	(rewrite_stmt): Don't redefine redundant expressions.

2003-05-08  Jeff Law  <law@redhat.com>

	* c-simplify.c (simplify_expr_stmt): Make sure to
	simplify the body of the EXPR_STMT.

	* tree-dfa.c (remove_decl): Accept new argument for the block
	to start the search.
	* tree-flow.h (remove_decl): Update prototype.
	* tree-cfg.c (remove_stmt): Pass the toplevel block to
	remove_decl.

	* tree-dfa.c (find_hidden_use_vars): No longer returns a value.
	Callers and prototype updated.  No longer need to look for
	nested functions, instead just mark any variables and
	parameters with DECL_NONLOCAL set as having hidden uses.

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

	* version.c (version_string): Change format to show daily
	datestamp and merged date.

2003-05-07  Jeff Law  <law@redhat.com>

	* tree-cfg.c (remove_useless_stmts_and_vars): Do not remove
	the toplevel BIND_EXPR for an inlined function.

	* tree-dfa.c (find_hidden_use_vars): Look at the size of
	VAR_DECLs, not the size of ARRAY_TYPES.  Also make sure
	to reset *inside_vla to its original value when done
	processing any particular VAR_DECL.

2003-05-06  Diego Novillo  <dnovillo@redhat.com>

	* c-simplify.c (simplify_if_stmt): Warn if
	-Wunreachable-code is given and the conditional is always
	true or always false.

	* expr.c (expand_expr): Don't try to expand FUNCTION_DECL
	nodes when processing BIND_EXPR_VARS.

	* varasm.c (output_constant_def_contents): Re-use the
	label when emitting a label for mudflap.

	Disable the following patch:

	2003-04-30  Steven Bosscher  <steven@gcc.gnu.org>

		* ggc-page.c (TREE_EXP_SIZE): Define.
		(extra_order_size_table): New entry for expr trees with
		two operands.

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

	* tree-cfg.c (make_exit_edges): Fix handling of blocks which
	end with calls.

	* tree-cfg.c (remove_useless_stmts_and_vars): Remove GOTO_EXPRs
	to the immediately following tree node.

	* tree-cfg.c (make_goto_expr_edges): Fix typo in comment.
	(remove_useless_stmts_and_vars): New function.
	* tree-flow.h (remove_useless_stmts_and_vars): Prototype.
	* tree-ssa.c (rewrite_out_of_ssa): After returning to normal
	form, call remove_useless_stmts_and_vars.

2003-05-02  Daniel Berlin  <dberlin@dberlin.org>

	* tree-alias-common.c (alias_get_name): Given unnamed result decls
	a name.
	(create_fun_alias_var): Use DECL_RESULT if available.

2003-05-02  Jeff Law  <law@redhat.com>

	* tree-inline.c (expand_call_inline): Avoid creating naked
	_DECL nodes for inlined functions which had NRV optimizations
	applied.

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

	* tree-cfg.c (build_tree_cfg): Update comment.
	(make_blocks): Don't skip over empty statements.
	Move exception handling code ...
	(compute_reachable_eh): ... here.
	(set_parent_stmt): Don't skip over empty statements.
	(bsi_remove): Don't return early on empty statements.
	Don't call STRIP_NOPS.
	(remove_stmt): Don't call STRIP_NOPS.
	Always compute the block holding the statement.
	After replacing the statement with an empty statement, add the
	empty statement to the block.
	(successor_block): Don't call STRIP_NOPS.
	(first_exec_stmt): Likewise.
	(first_exec_block): Don't return early for empty statements.
	(first_stmt): Don't test for NULL blocks.
	Reformat to improve legibility.
	(bsi_next_in_bb): Don't call STRIP_NOPS.
	Reformat to improve legibility.
	(set_bb_for_stmt): Don't ignore empty statements.

	* tree-dfa.c (get_stmt_operands): Don't call STRIP_NOPS.
	(create_stmt_ann): Don't abort on emtpy statements.
	Don't call STRIP_NOPS.
	(copy_stmt): Remove unused function.
	* tree-flow.h (copy_stmt): Remove prototype.

	* tree-flow-inline.h: Don't call STRIP_NOPS.
	Remove local variable 't'.
	(bsi_stmt): Don't return NULL_TREE for empty statements.
	Ignore error_mark_node.

	* tree-iterator.h (tsi_next): Don't call STRIP_NOPS.
	(tsi_stmt_ptr): Likewise.
	(tsi_stmt): Likewise.
	Don't return NULL_TREE for empty statements.

	* tree-pretty-print.c (dump_generic_node): Don't ignore empty
	statements.

	* tree-ssa-ccp.c (fold_stmt): Don't call STRIP_NOPS.
	* tree-ssa-dce.c (find_useful_stmts): Likewise.
	(remove_dead_stmt): Likewise.
	* tree-ssa.c (mark_def_sites): Likewise.
	(rewrite_out_of_ssa): Likewise.
	(rewrite_stmt): Likewise.

	* tree.c (make_ssa_name): Don't ignore empty statements.
	(body_is_empty): Fix comment.

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

	* tree-dfa.c (find_hidden_use_vars): Renamed from find_vla_decls.
	Now returns a value indicating if nested function was found.
	When nested functions are found, mark suitable variables as
	having hidden uses.
	(find_hidden_use_vars_r): Renamed from find_vla_decls_r.
	(compute_may_alias): Corresponding changes.  Handle
	multiple BLOCKs at the toplevel of a function.

2003-04-30  Diego Novillo  <dnovillo@redhat.com>

	* tree.c (build_empty_stmt): New function.
	* tree.h (IS_EMPTY_STMT): Define.
	(TI_EMPTY_STMT): Remove.
	(empty_stmt_node): Remove.
	Replace 'X = empty_stmt_node' with 'X = build_empty_stmt ()',
	and 'X == empty_stmt_node' with 'IS_EMPTY_STMT (X)' everywhere.
	(build_empty_stmt): Declare.

	* cp/cp-simplify.c (cp_simplify_stmt): Use IS_EMPTY_STMT.

	* java/java-tree.h (build_java_empty_stmt): Declare.
	* java/expr.c (build_java_empty_stmt): New function.
	* java/decl.c (java_init_decl_processing): Don't build empty_stmt_node.
	Replace 'X = empty_stmt_node' with 'X = build_java_empty_stmt ()',
	and 'X == empty_stmt_node' with 'IS_EMPTY_STMT (X)' everwhere.

2003-04-30  Jeff Law  <law@redhat.com>

	* tree-dfa.c (get_expr_operands): Do not ignore operands of an
	an ADDR_EXPR if it is a PARM_DECL or VAR_DECL.

	* tree-dfa.c (get_expr_operands): Look inside operands in
	a TREE_LIST.

2003-04-29  Diego Novillo  <dnovillo@redhat.com>

	* builtins.def (BUILTIN_CONSTANT_P): Mark as constant.

	* tree-dfa.c (get_expr_operands): Do not add VDEF operands for
	dereferenced pointers at call sites.
	* tree-ssa.c (assign_vars): Abort if we couldn't coalesce all the
	versions together.

2003-04-29  Andrew MacLeod  <amacleod@redhat.com>

	* tree-cfg.c (bsi_start): If there are no stmts in a block, use the
	context pointer to represent the basic block.
	(bsi_insert_after): Handle inserting into empty blocks better.
	(bsi_insert_before): Call bsi_insert_after to handle empty blocks.
	* tree-ssa.c (elim_create): Clear bitmap after its been processed
	instead of during loop.

2003-04-27  Diego Novillo  <dnovillo@redhat.com>

	* Makefile.in (tree-mudflap.o): Add dependency on $(TREE_DUMP_H).
	* c-decl.c (c_expand_body_1): Don't call simplify_function_tree
	after mudflap_c_function.
	Move mudflap instrumentation after SSA optimizers.
	* tree-dump.c (dump_files): Add entry for -fdump-tree-mudflap.
	* tree.h (enum tree_dump_index): Add TDI_mudflap.
	* doc/invoke.texi: Document -fdump-tree-mudflap.
	* tree-mudflap.c: Include tree-dump.h.
	(dump_file): New local variable.
	(dump_flags): New local variable.
	(mudflap_c_function): Call dump_begin, dump_end and dump_function.
	(mf_decl_cache_locals): Set DECL_CONTEXT for __mf_lookup_shift_l
	and __mf_lookup_mask_l to current_function_decl.
	(mf_offset_expr_of_array_ref): Likewise for __mf_index_X.
	(mf_build_check_statement_for): Re-implement to emit a proper
	STMT_EXPR.
	(mx_xfn_indirect_ref): Emit detailed debugging info if
	-fdump-tree-mudflap-details is given.
	(mudflap_enqueue_decl): Likewise
	* tree-optimize.c (optimize_function_tree): Don't check for
	-fmudflap.

2003-04-26  Diego Novillo  <dnovillo@redhat.com>

	* c-simplify.c (build_bc_goto): If the target label couldn't be
	found, emit an error message.

2003-04-25  Andrew MacLeod  <amacleod@redhat.com>

	* tree-ssa-live.c (compact_var_map): Add parameter to exclude variables
	with a single SSA version.
	(init_root_var): Allow that a var_map might not be compacted yet.
	* tree-ssa-live.h (compact_var_map): Change Prototype.
	* tree-ssa.c (rewrite_out_of_ssa): When coalescing, don't include single
	reference variables during the compaction.

2003-04-25  Jeff Law  <law@redhat.com>

	* tree-optimize.c (optimize_function_tree): Simplify slightly.

2003-04-25  Andrew MacLeod  <amacleod@redhat.com>

	* tree-ssa.c (struct _elim_graph): Change type of fields
	'pred' and 'succ' to be bitmaps instead of sbitmaps.
	Update all uses.

2003-04-25  Diego Novillo  <dnovillo@redhat.com>

	* tree-cfg.c (linearize_cond_expr): Reformat.
	* tree-dfa.c (get_expr_operands): Check for read-only
	status the dereferenced argument pointer, not the pointer
	itself.
	(add_stmt_operand): Always consider global variables as
	virtual operands.

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

	* gimplify.c (simplify_cond_expr): Avoid redundant gimplification.

	Add TREE_VEC of case labels to the SWITCH_EXPR during gimplification.
	* tree.def (CASE_LABEL_EXPR): Add an operand for the LABEL_DECL.
	* tree.h (SWITCH_LABELS, CASE_LABEL): New macros.
	* c-simplify.c (c_simplify_stmt) <CASE_LABEL>: Create LABEL_DECL here.
	* expr.c (expand_expr) <CASE_LABEL_EXPR>: Not here.
	* gimplify.c (gimplify_ctx): Add case_labels field.
	(gimplify_switch_expr, gimple_add_case_label): New fns.
	(simplify_expr): Use them.

2003-04-24  Andrew MacLeod  <amacleod@redhat.com>

	* tree-flow.h (processed_out_of_ssa): Rename to out_of_ssa_tag.
	* tree-ssa-live.c (register_ssa_partition): Add variable to partition.
	(change_partition_var): Use out_of_ssa_tag.
	(create_ssa_var_map): Add all uses, defs and PHI elements to partition.
	(new_tree_live_info): Create a live range info structure.
	(delete_tree_live_info): Free storage.
	(live_worklist): Fill in the live range info for a variable for the
	blocks between the def and all the blocks containing uses.
	(set_if_valid): Set partition bit if variable is in a partition.
	(add_livein_if_notdef): Set live on entry bit for a var's partition
	if a definition has not been seen.
	(calculate_live_on_entry): Create partition live on entry bitmaps for
	all basic blocks .
	(calculate_live_on_exit): Calculate live on exit information for each
	basic block.
	(init_root_var): Initialize and fill in a root_var structure.
	(remove_root_var_partition): remove a partition from a root_var list.
	(delete_root_var): Free storage.
	(dump_root_var): Display root_var summary.
	(dump_var_map): Show extra info for ssa name versions.
	* tree-ssa-live.h (NO_PARTITION): Define.
	(register_ssa_partition): Remove.
	(partition_to_var): Use partition_find after decompressing.
	(var_to_partition): Return NO_PARTITION if var is not in a partition.
	(struct tree_live_info_d): Define live range info structure.
	(partition_is_global): Return 1 if used outside a basic block.
	(live_entry_blocks): Return bitmap over blocks that partition is live
	on entry to.
	(live_on_exit): Return bitmap of partitions live on exit from a block.
	(struct root_var_d): Define a root_var structure.
	(ROOT_VAR_NONE): Define.
	(num_root_vars): Number of variables in root_var object.
	(root_var): Return variable for a root_var index.
	(first_root_var_partition): Return first partition for a root_var.
	(next_root_var_partition): Get next partition for a root_var.
	(find_root_var): Find root_var index for a specific partition.
	* tree-ssa.c (eliminate_extraneous_phis): Remove.
	(set_if_valid): Set partition bit if variable is in a partition.
	(add_conflicts_if_valid): Add conflict between variable and all
	related partitions set in a bitvector.
	(coalesce_ssa_name): Create a conflict graph and coalesce all
	partitions which don't conflict and are related by the same root_var.
	(assign_vars): Use a root_var object, and assign different real
	variables to all partitions.
	(rewrite_out_of_ssa): Call compact_var_map() once, and don't call
	eliminate_extraneous_phis.

2003-04-23  Daniel Berlin  <dberlin@dberlin.org>

	* tree-flow.h (create_global_var): Add prototype.

	* tree-dfa.c (create_global_var): Externalize.

	* tree-alias-common.c: Set DECL_CONTEXT on our temp alias vars.
	(call_may_clobber): Make a copy of this function, since our version
	will be slightly different soon.
	(create_alias_vars): We need global_var, so create it if necessary.

2003-04-23  Daniel Berlin  <dberlin@dberlin.org>

	* tree-ssa-pre.c (do_proper_save): Remove old code, since the new
	insertion code works okay.
	(pre_expression): Use new_rename_1, it removes a *lot* of useless
	saves.

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

	* gimplify.c (simplify_target_expr): Make sure to simplify
	the cleanup too.

	* tree-ssa.c (struct def_blocks_d): Add new field phi_insertion_points.
	(compute_global_livein): Accept varray rather than bitmaps.  Callers
	updated.  Rewrite to compute global life information for all the
	objects in the varray in parallel.
	(insert_phis_for_deferred_variables): New function.
	(insert_phi_nodes_for): New argument DEF_MAPs.  When an object
	crosses the threshold for using fully pruned PHI insertions,
	push it on the def_maps varray for deferred processing.
	(insert_phi_nodes): Initialize def_maps.  Pass it to
	insert_phi_nodes_for.  Drain the def_maps varray as it grows.
	Also drain any residual objects in def_maps.  Zero def_maps
	when complete.

2003-04-21  Jeff Law  <law@redhat.com>

	* tree-cfg.c (find_contained_blocks_and_edge_targets): New function.
	(try_finallys): New varray used during edge creation.
	(make_edges): Initialize try_finallys varray.  After creating
	all the "normal" edges, go back and create the special edges
	for the try-finally blocks.
	(make_ctrl_stmt_edges): Create edges for the EH nodes.  Also
	make sure to build the try-finally stack.
	(make_exit_edges): Create edges from calls which may throw
	to any directly reachable exception handlers.
	(is_ctrl_altering_stmt): Statements which may throw alter
	flow control.

	* tree-cfg.c: Include except.h.
	(eh_stack): New file-scoped varray.
	(build_tree_cfg): Initialize eh_stack.
	(make_catch_expr_blocks): New function.
	(make_try_expr_blocks, make_eh_filter_expr_blocks): Likewise.
	(make_blocks): Call new functions as needed.  When ending a block
	due to a statement that may throw, compute the reachable exception
	handlers and store it in the statement's annotation.
	(is_ctrl_stmt): Handle EH nodes.
	(stmt_ends_bb_p): Likewise.
	* tree-flow.h (stmt_ann_d): Add new field reachable_exception_handlers.

	* except.c (check_handled): No longer static.
	* except.h (check_handled): Prototype.

	* c-simplify.c (c_build_bind_expr): Revert change from earlier today.

	* c-common.h (find_reachable_label): Prototype.
	* c-semantics.c (find_reachable_label): No longer static.
	* c-simplify.c (c_build_bind_expr): Avoid creating unnecessary
	BIND_EXPRs.
	(simplify_cleanup): Avoid creating unnecessary TRY_CATCH_EXPRs
	or TRY_FINALLY_EXPRs.
	(simplify_if_stmt): If the condition is constant and the
	unexecuted arm has no reachable code, then just emit
	the executed arm.

2003-04-18  Sebastian Pop  <s.pop@laposte.net>

	* cfghooks.h, cfghooks.c: New files.
	* Makefile.in (BASIC_BLOCK_H): Depends on cfghooks.h.
	(OBJS): Add cfghooks.o.
	(tree-optimize.o): Depends on cfgloop.h.
	(cfghooks.o): New rule.
	* basic-block.h (split_edge): Rename to rtl_split_edge.
	(tree_split_edge): Declare.
	(create_bb): Declare extern here.
	(verify_flow_info): Rename to rtl_verify_flow_info.
	(tree_verify_flow_info): Declare.
	(cfghooks.h): Included here.
	* cfgloop.c (tree.h, tree-flow.h): Included.
	(make_forwarder_block): Renamed to rtl_make_forwarder_block.
	(tree_make_forwarder_block): New static function.
	(blocks_headers): Declared static.
	(HEADER_BLOCK): Use blocks_headers instead of bb's .aux field.
	(redirect_edge_with_latch_update, make_forwarder_block,
	canonicalize_loop_headers): Don't allocate .aux, but makes grow
	the blocks_headers array.
	(canonicalize_loop_headers): Register tree_make_forwarder_block
	into the tree_cfg_hooks and rtl_make_forwarder_block into the
	rtl_cfg_hooks structure.
	(canonicalize_loop_headers): Initialize/free the blocks_headers
	array rather than the bb's .aux field.
	* cfgloopmanip.c (loop_split_edge_with_NULL): New static function.
	(remove_path, force_single_succ_latches):
	Call loop_split_edge_with_NULL instead of loop_split_edge_with.
	* cfgrtl.c (split_block): Update the comment.
	(split_edge): Renamed rtl_split_edge.
	(verify_flow_info): Renamed rtl_verify_flow_info.
	* loop-init.c (loop_optimizer_init, loop_optimizer_finalize):
	Execute code following the value of cfg_level.
	* toplev.c (rest_of_compilation): Call rtl_register_cfg_hooks.
	* tree-cfg.c (create_bb): Declared extern.
	(build_tree_cfg): Call tree_register_cfg_hooks.
	(make_edges, make_exit_edges): Remove the use of EDGE_FALLTHRU.
	(bsi_commit_first_edge_insert): Use split_edge.
	(tree_split_edge, tree_verify_flow_info): New functions.
	* tree-optimize.c (cfgloop.h): Included.
	(optimize_function_tree): Add #if 0'ed calls to
	loop_optimizer_init and loop_optimizer_finalize.

2003-04-16  Jeff Law  <law@redhat.com>

	* Makefile.in (tree-ssa.o): Depend on langhooks.h.
	(tree-dfa.o, tree-cfg.o): Likewise.
	* tree-cfg.c: Include langhooks.h
	(dump_tree_cfg): Revamp how we get the current function's name
	to not rely on current_function_name (and implicitly cfun).
	(dump_cfg_stats, tree_cfg2dot): Likewise.
	* tree-dfa.c: Include langhooks.h
	(dump_immediate_uses): Revamp how we get the current function's name
	to not rely on current_function_name (and implicitly cfun).
	(dump_dfa_stats, dump_alias_info): Likewise.
	* tree-ssa.c: Include langhooks.h
	(dump_tree_ssa): Revamp how we get the current function's name
	to not rely on current_function_name (and implicitly cfun).

	* tree-cfg.c (make_loop_expr_blocks): When determining the value for
	NEXT_BLOCK_LINK, correctly handle empty statement nodes at the
	end of the tree.
	(make_cond_expr_blocks, make_switch_expr_blocks): Likewise.
	(make_bind_expr_blocks): Likewise.

	* gimplify.c (keep_function_tree_in_gimple_form): Move check of
	flag_disable_simple here.  Include flags.h.
	* Makefile.in (gimplify.o): Depends on flags.h
	* c-decl.c (c_expand_body_1): No longer check flag_disable_simple.
	* tree-inline.c (copy_body_r): Avoid creating non-gimple code
	when inlining a function where the RESULT_DECL's initialization
	is not on the RETURN_EXPR.

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

	* tree-flow.h (struct var_ann_d): Renamed is_vla_decl field to
	has_hidden_use.
	(has_hidden_use, set_has_hidden_use): Renamed from is_vla_decl
	and set_vla_decl.
	* tree-flow-inline.h (has_hidden_use): Renamed from is_vla_decl.
	Updated to use "has_hidden_use" instead of "is_vla_decl" field.
	(set_has_hidden_use): Renamed from set_vla_decl.
	Updated to use "has_hidden_use" instead of "is_vla_decl" field.
	* tree-dfa.c (dump_variable): Corresponding changes.
	(find_vla_decls_r): Likewise.
	* c-simplify.c (simplify_decl_stmt): Likewise.
	* tree-ssa-dce.c: Likewise.

2003-04-09  Jeff Law  <law@redhat.com>

	* tree-dfa.c (struct alias_set_d, field tag_sym_set): Remove
	unused field.
	(register_alias_set): Rework to avoid incorrect coalescing of
	entries.  Fix memory leak.  No longer set field tag_sym_set.
	(get_expr_operands): ADDR_EXPR expressions may have interesting
	operands in some cases.

2003-04-09  Diego Novillo  <dnovillo@redhat.com>

	* gimplify.c (simplify_expr): Handle VECTOR_CST nodes.
	* tree-cfg.c (make_blocks): Ignore empty statement containers.
	Create a basic block before processing containers that only have
	empty statements.
	(make_loop_expr_blocks): Use the container instead of the statement
	when setting NEXT_BLOCK_LINK.
	(make_cond_expr_blocks): Likewise.
	(make_switch_expr_blocks): Likewise.
	(make_bind_expr_blocks): Likewise.
	(successor_block): If the last statement of the block is the empty
	statement, use its container to get NEXT_BLOCK_LINK.
	(stmt_starts_bb_p): Return false if the statement is NULL.
	* tree-pretty-print.c (dump_generic_node): Handle VECTOR_CST nodes.
	* tree-simple.c (is_simple_const): Accept VECTOR_CST as constants.
	* objc/objc-lang.c (LANG_HOOKS_TREE_INLINING_TREE_CHAIN_MATTERS_P):
	Define.

2003-04-06  Diego Novillo  <dnovillo@redhat.com>

	* tree-cfg.c (remove_bb): Call ssa_remove_edge.
	(cleanup_cond_expr_graph): Likewise.
	(cleanup_switch_expr_graph): Likewise.
	(disconnect_unreachable_case_labels): Likewise.
	(merge_tree_blocks): Likewise.
	Update PHI nodes at BB2's successor.
	(dump_tree_bb): Show PHI nodes in the block.
	* tree-dfa.c (add_phi_arg): Update comment.
	(remove_phi_arg_num): New function.
	(remove_phi_arg): Call it.
	Move from tree-ssa.c.
	(remove_phi_node): Move from tree-ssa.c.
	* tree-flow.h (ssa_make_edge): Declare.
	(ssa_remove_edge): Declare.
	* tree-pretty-print.c (dump_generic_node): Show block where PHI
	arguments are coming from.
	* tree-ssa-dce.c (pdom_info): New local variable.
	(remove_dead_stmts): Initialize it and free it at the end.
	(remove_conditional): New function.
	(remove_dead_stmt): Call it.
	* tree-ssa.c (eliminate_phi): If the edge index is -1, abort
	compilation.
	(ssa_remove_edge): New function.
	(ssa_make_edge): New function.

2003-04-06  Andrew MacLeod  <amacleod@redhat.com>

	* tree-cfg.c (push_bsi): New. Push a block_stmt_iterator onto a stack.
	(pop_bsi): New. Pop a block_stmt_iterator off a stack.
	* tree-flow-inline.h (struct bsi_list_d): Block iterator stack struct.
	(new_bsi_list): Start a new bsi stack.
	(empty_bsi_stack): Is stack empty.
	(FOR_EACH_BSI_IN_REVERSE): Macro for processing bsi's in reverse.
	(FOR_EACH_STMT_IN_REVERSE): Macro for processing stmt's in reverse.

2003-04-06  Andreas Jaeger  <aj@suse.de>

	* treelang/treetree.c (tree_code_create_function_initial): Replace
	calls to non-existent function annotate_with_file_line_column with
	calls to annotate_with_file_line.
	(tree_code_create_variable): Likewise.

2003-04-05  Diego Novillo  <dnovillo@redhat.com>

	* tree-dfa.c (get_expr_operands): Do not clobber readonly operands
	in CALL_EXPRs.
	(find_vars_r): Likewise.
	(add_indirect_ref_var): When creating new INDIRECT_REF variables,
	copy the readonly attribute from the variable's type.

2003-04-05  Diego Novillo  <dnovillo@redhat.com>

	* tree.c (copy_node): Never copy tree annotations.

2003-04-05  Diego Novillo  <dnovillo@redhat.com>

	* tree-ssa-ccp.c (visit_cond_stmt): Don't short circuit evaluation
	of UNDEFINED conditional expressions.

2003-04-04  Andrew MacLeod  <amacleod@redhat.com>

	* Makefile.in : Add tree-ssa-live.c and tree-ssa-live.h files.
	* tree-ssa.c (struct _var_map, create_var_map, delete_var_map,
	var_from_partition, get_var_partition, mapped_var_from_ref,
	compact_var_map, dump_tree_partition, set_partition_for_var,
	set_var_mapping, create_var_partition): Remove.
	(create_temp): Allow temps to be created from SSA_NAME vars as well.
	(eliminate_name, eliminate_build, elim_backward, elim_create,
	eliminate_phi): Use new var map interface.
	(coalesce_ssa_name): New. Coalesce ssa_name ranges together.
	(assign_vars): Assign real variables to ssa_name partitions.
	(rewrite_out_of_ssa): Use new varmap partition and routines.
	* tree-ssa-live.h: New file
	(var_map): Structure for variable map.
	(num_var_partitions): Number of partitions.
	(partition_to_var): Return variable for partition.
	(var_to_partition): Return partition variable is in.
	(var_to_partition_to_var): Return variable representing partition
	another variable is in.
	(register_ssa_partition): Initialize a partition element as used.
	* tree-ssa-live.c: New file.
	(init_var_map): Initialize a var_map.
	(delete_var_map): Free storage for a var_map.
	(var_union): Combine 2 partitions.
	(compact_var_map): Reduce the number of partitions in a var_map.
	(change_partition_var): Assign a specific var to a partition.
	(create_ssa_var_map): Initialize a var_map with referenced variables.
	(dump_var_map): Debug output for a var_map.

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

	* fold-const.c (fold_relational_hi_lo): Add missing comparison when
	folding comparisons to signed_max+1.

2003-04-02  Jason Merrill  <jason@redhat.com>
	    Diego Novillo  <dnovillo@redhat.com>

	* tree-inline.c (initialize_inlined_parameters): Cast argument
	types appropriately when emitting initialization assignments.

2003-04-01  Andrew MacLeod  <amacleod@redhat.com>

	* tree-cfg.c (PENDING_STMT, SET_PENDING_STMT): New Macros.
	(bsi_insert_on_edge): Rename to bsi_commit_first_edge_insert. Add an
	empty annotation record to the new basic_block.
	(bsi_commit_edge_inserts): New. Commit all pending edge inserts.
	(bsi_insert_on_edge): New. Add stmt to edge's pending insert list.
	* tree-flow-inline.h (phi_arg_from_edge): Return PHI index for an edge.
	(phi_element_for_edge): Return PHI element for an edge.
	* tree-flow.h (struct var_ann_d): Add auxiallary field and new
	bit 'processed_out_of_ssa'.
	* tree-ssa.c (_var_map): Structure for variable parition map.
	(struct _elim_graph): Elimination graph for out-of-ssa pass.
	(create_var_map): Create a new var_map.
	(delete_var_map): Delete a var_map.
	(var_from_parition): Return var for a specified partition.
	(get_var_partition): Return partition a var belongs to.
	(mapped_var_from_ref): Get root var for a var's partition.
	(compact_var_map): Re-map the partitions to make the list dense.
	(dump_var_parition): Print var_map.
	(set_partition_for_var): Associate a real var with a partition.
	(set_var_mapping): Associate an SSA version var with a real var.
	(create_var_partition): Create a partition for processing.
	(create_temp): Create a new temp variable for a partition.
	(insert_copy_on_edge): Insert a copy between variables on an edge.
	(new_elim_graph): Create a new elimination graph.
	(clear_elim_graph): clear an elimination graph.
	(delete_elim_graph): Delete an elimination graph.
	(eliminate_name, eliminate_build, elim_forward,
	elim_unvisited_predecessor, elim_backward, elim_create,
	eliminate_phi): Routines to implement Morgans PHI elimination algorithm.
	(eliminate_extraneous_phis): Eliminate PHI nodes which will never
	generate code.
	(rewrite_out_of_ssa): Use partitions and PHI elimination algorithm.

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

	* tree-cfg.c (make_blocks): Make sure the BIND_EXPR's subgraph
	actually ended in a statement before seeing of the statement should
	end a basic block.

	* tree-cfg.c (dump_tree_cfg): Avoid crashing when cfun is NULL.
	(tree_cfg2dot): Likewise.
	* tree-dfa.c (dump_immediate_uses): Likewise.
	* tree-pretty-print.c (dump_generic_node): Dump the EH_FILTER_FAILURE
	nodes attached to an EH_FILTER_EXPR.

	* tree-dfa.c (get_stmt_operands): Add cases for TRY_FINALLY_EXPR,
	TRY_CATCH_EXPR, CATCH_EXPR and EH_FILTER_EXPR.
	(get_expr_operands): Add case for EXC_PTR_EXPR.

	* tree-dfa.c (compute_may_aliases): Accept FNDECL as an argument.
	Use FNDECL instead of relying on CURRENT_FUNCTION_DECL.
	* tree-flow.h (compute_may_aliases): Update prototype.
	* tree-ssa.c (rewrite_into_ssa): Corresponding changes.

	* tree-inline.c (expand_calls_inline): Correctly handle EH_FILTER_EXPR.

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

	* Makefile.in (STRICT_WARN, STRICT2_WARN): Remove -Wtraditional.
	* timevar.def (TV_TREE_CLEANUP_CFG): Define.
	* tree-cfg.c (set_parent_stmt): Add documentation.
	(replace_stmt): New function.
	(merge_tree_blocks): New function.
	(remap_stmts): New function.
	(linearize_cond_expr): New function.
	(linearize_control_structures): New function.
	(cleanup_tree_cfg): Call it.
	Use new timevar TV_TREE_CLEANUP_CFG.
	(remove_bb): Update debugging message.
	Make sure that bb->head_tree_p and bb->end_tree_p exist before
	resetting their basic blocks.
	(remove_stmt): When removing a control flow expression, update
	basic block flags.
	(cleanup_control_flow): Make sure that the block contains
	statements.
	(last_stmt): Reformat for readability.
	(last_stmt_ptr): Return NULL if the block has no statements.
	* tree-flow-inline.h (parent_block): Check that the block is not
	empty.
	* tree-flow.h (bb_empty_p): Remove.
	* tree-inline.c (copy_tree_r): Do not copy empty_stmt_node.
	* tree-ssa-dce.c (tree_ssa_dce): Call cleanup_tree_cfg.
	* tree.c (body_is_empty): New function.
	* tree.h (body_is_empty): Declare.

2003-03-31  Jeff Law  <law@redhat.com>

	* tree-ssa-ccp.c (simulate_block): Add abnormal edges out of a
	block to the edge worklist after simulating a block for the
	first time.  If the block has a single outgoing normal edge,
	add that edge to the worklist after simulating the block for
	the first time.

2003-03-31  Frank Ch. Eigler  <fche@redhat.com>

	* gcc.c (MFLIB_SPEC): Remove -ld.
	(MFWRAP_SPEC): Remove dlopen wrapping.

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

	* tree-ssa.c (rewrite_block): Add new argument 'eq_expr_value'.
	Update all users.
	If 'eq_expr_value' is given, use it to register a new
	value for the variable given on the LHS.
	If the block ends in a conditional expression of the form 'X == Y',
	propagate 'X = Y' into the THEN_CLAUSE.
	(MAY_COPYPROP_P): Define.
	(rewrite_stmt): Call it.
	(register_new_def): Fix comment.
	(get_eq_expr_value): New function.

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

	* basic-block.h (BB_COMPOUND_ENTRY): Remove.  Update all users
	everywhere.
	* tree-cfg.c: Minor fixes to various comments.
	* tree-optimize.c (optimize_function_tree): Dump optimized function
	after SSA->normal conversion.

2003-03-26  Daniel Berlin  <dberlin@dberlin.org>

	* tree-ssa-pre.c:  Implement open64 renaming algorithm.
	(subst_phis): New function.
	(generate_expr_as_of_bb): Ditto.
	(new_rename_1): Ditto.
	(process_delayed_rename): Ditto.
	(do_proper_save): Use bsi_* functions for insertion, don't remove
	old code quite yet, haven't fully tested.
	Also add argument that says whether to insert before use or after use.
	(defs_y_dom_x): Factor through injuries properly.
	(defs_match_p): Ditto.
	(phi_opnd_from_res): Attempt to fix, and remove useless argument.
	(reset_can_be_avail): Fix broken condition that would cause infinite
	loop.
	(update_old_new): #if 0 updating of bb heads.
	(finalize_1): We occasionally get 5 + a rather than a + 5, so we
	need to make sure 5 is a DECL before trying to get a reaching def.
	(repair_use_injury): If we couldn't find a reaching def, we don't need
	to repair it.
	(assign_new_class): Only push to stack2 if it exists (so we can
	share this function in both rename implementations).
	(create_ephi_node): Add argument that says whether to add ephi
	to block or not (we create them sometimes for validation only).
	(tree_perform_ssapre): Skip expressions without any uses.

	* tree.h: Add EREF_DELAYED_RENAME.
	(struct tree_eref_common): Add delayed_rename bit.

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

	* tree-simple.c: Use tree codes to document grammar for relational
	operators &&, || and ^.

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

	* cfg.c (dump_edge_info): Add labels for EDGE_TRUE_VALUE,
	EDGE_FALSE_VALUE and EDGE_EXECUTABLE.
	* tree-cfg.c (dump_tree_bb): Change formatting.  Show all
	statements in the block.
	* tree-simple.c: Update documentation for GIMPLE conditional
	expressions.

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

	* tree-dfa.c (get_expr_operands): If there are no call clobbered
	variables, don't create a VDEF for GLOBAL_VAR at clobbering
	CALL_EXPRS.
	* tree-flow.h (fold_stmt): Declare.
	* tree-ssa-ccp.c (fold_stmt): Change to extern declaration.
	* tree-ssa.c (rewrite_stmt): Call it.

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

	* Makefile.in (gtype-desc.o): Add dependency on $(TREE_FLOW_H).

	* tree-dfa.c (struct alias_set_d): Add field 'num_elements'.
	(struct walk_state): Move declaration earlier in the file.
	(create_global_var): New local function.
	(num_referenced_vars, num_aliased_objects): Change type to
	'size_t'.  Update all users.
	(aliased_objects, aliased_objects_base, aliased_objects_aliase_set):
	Mark for garbage collection.
	(num_call_clobbered_vars, call_clobbered_vars): New global
	variable.
	(get_expr_operands): For CALL_EXPRs, add a VUSE or VDEF reference
	for every pointer argument.  If the call may clobber, add a VDEF,
	otherwise add a VUSE.
	If the call may clobber, add VDEF for GLOBAL_VAR.
	(dump_variable): Show whether the variable is call clobbered.
	(dump_dfa_stats): Show call clobbered variables.
	(compute_may_aliases): Minor formatting changes.
	(compute_alias_sets): If the function makes clobbering calls, add
	GLOBAL_VAR as an alias to every call-clobbered variable.
	Remove alias sets that have exactly one element.
	(register_alias_set): Set 'num_elements' to zero for every newly
	created alias set.
	(find_alias_for): Don't make a second call to add_may_alias to make
	alias tags alias themselves.  It's redundant.
	Increment 'num_elements' when adding a new alias to an alias set.
	(may_alias_p): Don't handle GLOBAL_VAR.
	Check for structure aliasing when either PTR or VAR are a
	structure.  Don't do it only when both are structures.
	(dump_alias_info): Show all aliases of each variable.
	(find_vars_r): When processing a CALL_EXPR node, set
	walk_state->is_store if the function may clobber and create a
	reference to GLOBAL_VAR.
	(add_indirect_ref_var): Change type of second argument from 'void *'
	to 'struct walk_state *'.  Update all users.
	(add_referenced_var): Likewise.  If a potentially aliased variabe
	is not declared 'const', add it to the list of call clobbered
	variables.

	* tree-flow.h (struct var_ann_d): Add field 'is_call_clobbered'.
	Change type of field 'uid' to size_t.  Update all users.
	(stmt_ann_d): Add field 'makes_clobbering_call'.
	(next_tree_ref_id): Remove unused variable.
	(call_clobbered_vars): Declare.
	(num_call_clobbered_vars): Declare.
	(call_clobbered_var): New inline function.

	* tree-ssa-ccp.c (visit_phi_node): If the LHS of a PHI node is
	volatile, mark the PHI node VARYING without checking its arguments.
	(visit_assignment): Likewise.
	(set_value): Remove.  Update all users.
	(likely_value): If the statement makes aliased loads or has
	volatile operands, consider it VARYING.
	(get_default_value): If a variable is volatile, consider it
	VARYING.

	* tree-ssa.c (init_tree_ssa): Initialize num_call_clobbered_vars
	and call_clobbered_vars.
	Do not create GLOBAL_VAR.  Set it to NULL_TREE.
	Increase initial size for various hash tables.
	(delete_tree_ssa): Reset num_call_clobbered_vars and
	call_clobbered_vars.
	(get_reaching_def): Rename from currdef_for.  Update all users.
	Always create default definitions for variables that need them.
	Callers that use to call currdef_for with the second argument set
	to false now call get_value_for.
	(htab_statistics): New function.
	(dump_tree_ssa): Call it.
	(avail_expr_eq): Also compare VUSE operands.

2003-03-21  Jeff Law  <law@redhat.com>

	* tree-dfa.c: Revert vla changes from yesterday.
	(find_vla_decls_r): Do not look inside TYPE_DECLs.

2003-03-20  Jeff Law  <law@redhat.com>

	* gimplify.c (simplify_return_expr): Tighten condition for
	converting the RHS of a MODIFY_EXPR in a RETURN_EXPR to a
	simple_val.  Allow returning a RESULT_DECL directly.
	* tree-dfa.c (get_expr_operands): A RESULT_DECL can have
	interesting operands.
	(clobber_vars_r): Handle RESULT_DECLs.
	(compute_may_aliases): Initialize and free vla_htab.
	(find_vla_decls): Pass vla_htab to walk_tree.
	(find_vla_decls_r): Likewise.
	* tree.h (SSA_DECL_P): Accept RESULT_DECLs.

2003-03-19  Jeff Law  <law@redhat.com>

	* gimplify.c (simplify_return_expr): Only allow simple values
	on the RHS of a MODIFY_EXPR appearing in a RETURN_EXPR.
	* tree-cfg.c (make_exit_edges): We no longer need to look for
	CALL_EXPRs on the RHS of a MODIFY_EXPR inside RETURN_EXPRs.

2003-03-18  Andrew Macleod  <amacleod@redhat.com>

	* tree-cfg.c (make_blocks): Use append_stmt_to_bb. Check for NULL
	tsi_stmt when deciding whether to start a new block.
	(add_stmt_to_bb): Don't update the basic block end pointer.
	(append_stmt_to_bb): New. Add stmt and update the BB end pointer.
	(first_stmt): Use only 1 return.
	(last_stmt): Modified to use bsi_last().
	(last_stmt_ptr): Modified to use bsi_last().
	(bsi_last): New. Return an iterator to the last stmt in a block.
	(bsi_from_tsi): Fix bug which wouldn't set the context properly when
	within a nested BIND_EXPR.
	(bsi_update_from_tsi): Insert helper which is more efficient than
	bsi_from_tsi().
	(bsi_link_after): link in a new stmt and update the basic block
	data structures.
	(bsi_insert_after): Insert a new stmt into a block.
	(bsi_insert_before): Insert a new stmt into a block.
	(bsi_insert_on_edge): Insert a new stmt on an edge.
	* tree-flow-inline.h (is_label_stmt): Return true if stmt can be a
	target of a control transfer.
	* tree-flow.h (is_label_stmt, bsi_last): New prototypes.

2003-03-12  Jeff Law  <law@redhat.com>

	* c-simplify.c (simplify_switch_stmt): Save the type of the original
	condition in TREE_TYPE (SWITCH_EXPR (...)).  Annotate the SWITCH_EXPR
	with file/line information.
	* expr.c (expand_expr, case SWITCH_EXPR): Use expand_end_case_type.
	* tree.def (SWITCH_EXPR): Document meaning of TREE_TYPE field of
	the SWITCH_EXPR.

	* c-simplify.c (simplify_block): Set the current line number to
	the line associated with the end of the block.

	* c-decl.c (finish_function): No longer save/restore the
	current filename or linenumber around simplification.  Instead
	save/restore it around inlining.
	(c_expand_body_1): Save/restore current filename and linenumber
	around expansion of trees into RTL.
	* gimplify.c (simplify_function_tree): Make the current file/line
	number match the non-gimple code at the end of a function.

	* tree-cfg.c: Include toplev.h.
	(remove_bb): Warn about unreachable code.

	* cfgrtl.c (verify_flow_info): Ignore EDGE_EXECUTABLE, it's for
	the CCP optimizer only.

	* ssa.c (convert_to_ssa): Use last_basic_block, not n_basic_blocks.

2003-03-11  Jeff Law  <law@redhat.com>

	* builtins.c: Fix minor comment typo.
	(expand_builtin_strcmp, expand_builtin_strncmp): Remove.
	(expand_builtin_strcat, expand_builtin_strncat): Likewise.
	(expand_builtin_strspn, expand_builtin_strcspn): Likewise.
	(expand_builtin_strcopy, expand_builtin_strstr): Likewise.
	(expand_builtin_strpbrk, expand_builtin_strchr): Likewise.
	(expand_builtin_strrchr, expand_builtin_fputs): Likewise.
	(simplify_builtin_memcmp, simplify_builtin_strcmp): New functions.
	(simplify_builtin_strpbrk, simplify_builtin_strstr): Likewise
	(simplify_builtin_strchr, simplify_builtin_strrchr): Likewise
	(simplify_builtin_strcpy, simplify_builtin_strncpy): Likewise
	(simplify_builtin_strncmp, simplify_builtin_strcat): Likewise
	(simplify_builtin_strncat, simplify_builtin_strspn): Likewise
	(simplify_builtin_strcspn, simplify_builtin_fputs): Likewise
	(expand_builtin_memcmp): Use simplify_builtin_memcmp.
	(simplify_builtin): New function
	(expand_builtin): Use simpify_builtin to collapse several common
	cases together.
	* gimplify.c (simplify_call_expr): Accept new argument.  All
	callers updated.  Call simplify_builtin to try and simplify builtin
	function calls before we simplify their arguments.
	* tree.h (simplify_builtin): Prototype.

2003-03-11  Jeff Law  <law@redhat.com>

	* timevar.def (TV_TREE_SSA_TO_NORMAL): New timevar.
	* tree-cfg.c (remove_stmt): Also remove special annotations
	on RHS of MODIFY_EXPR statements.
	* tree-dfa.c (create_stmt_ann): Update comments.  Fix formatting.
	(compute_may_aliases): Make sure timevar encloses entire routine.
	* tree-ssa.c (rewrite_out_of_ssa): Enclose with a timevar.
	(remove_annotations_r): Avoid walking into subtrees of anything
	except container nodes.  Remove the special annotation on the
	RHS of MODIFY_EXPRs.

2003-03-10  Frank Ch. Eigler  <fche@redhat.com>

	* tree-mudflap.c (mx_xfn_indirect_ref): Allow unfolded "& ptr->field"
	constructs to pass uninstrumented.  Remove TREE_ADDRESSABLE settings.
	Keep array accesses to non-ADDRESSABLE objects uninstrumented.  Update
	__MF_TYPE_* constants for __mf_register calls.

2003-03-10  Jeff Law  <law@redhat.com>

	* c-decl.c (c_expand_body_1): Update comments relating to
	re-simplification after mudflap instrumentation.  Avoid
	unnecessary simplification of the function tree.
	* gimplify.c (keep_function_tree_in_gimple_form): New function.
	* tree-inline.c: Include tree-iterator.h and tree-simple.h
	(struct inline_data): Add new TSI field.
	(copy_body_r): Keep tree in gimple form when transforming a
	RETURN_EXPR into a MODIFY_EXPR and GOTO_EXPR.
	(initialize_inlined_parameters): Use MODIFY_EXPR, not INIT_EXPR
	for initialization of inlined parameters.
	(expand_call_inline): Save and restore the TSI around the
	call to expand_calls_inline.  Keep the tree in gimple form
	when replacing a CALL_EXPR with a BIND_EXPR for the inlined
	body.
	(expand_calls_inline): Revamp to provide the current TSI to
	expand_call_inline when we're working with gimple form.
	* Makefile.in (tree-inline.o): Update dependencies.
	* tree.h (keep_function_tree_in_gimple_form): Prototype.

2003-03-10  Andrew MacLeod  <amacleod@redhat.com>

	* Makefile.in (tree.o): Add tree-iterator.h dependancy.
	* sbitmap.c (sbitmap_realloc): Grow a sbitmap structure.
	* sbitmap.h (sbitmap_realloc): New Prototype.
	* tree-cfg.c (remove_bb): Use new format for bsi_remove.
	(bsi_remove): Update iterator to refer to the next stmt.
	(bsi_prev): Implement previous stmt routine.
	(bsi_from_tsi): Create a block iterator from a tree iterator.
	* tree-flow-inline.h (bsi_prev): Remove.
	(tsi_from_bsi): Create a tree iterator from a block iterator.
	* tree-flow.h (bsi_prev,bsi_remove): Update prototypes.
	(bsi_from_tsi, tsi_from_bsi, bsi_insert_*): New prototypes.
	(bsi_iterator_update): New enum type.
	* tree-iterator.h (tree_stmt_anchor, tsi_iterator_update): New type.
	(tsi_link_before, tsi_link_after, tsi_delink, tsi_new_stmt_list,
	tsi_stmt_list_head): New prototypes.
	* tree-ssa-dce.c (remove_dead_stmts): Update removal loop to allow
	that remove_dead_stmt update's the iterator.
	(remove_dead_stmt): Use a pointer to the iterator since bsi_remove
	requires it.
	* tree.c (tsi_link_before): New function to link a stmt before an
	iterator.
	(tsi_link_after): New function links stmt after an iterator.
	(tsi_delink): Removes a stmt from a list.
	(tsi_new_stmt_list): New function to begin a new stmt list.
	(tsi_stmt_list_head): New function to get the first stmt in a list.

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

	* tree-cfg.c (remove_stmt): Don't assume that the statement is in
	SSA form.

	* tree-flow.h (dump_tree_ssa_stats): Declare.
	(debug_tree_ssa_stats): Declare.
	(stmt_ann_d): Add new statement flags 'makes_aliased_loads',
	'makes_aliased_stores', and 'has_volatile_ops'.
	* tree-dfa.c (add_stmt_operand): Set new statement flags accordingly.

	* tree-pretty-print.c (dump_generic_node): Various cosmetic changes
	to the rendering of some expressions.

	* tree-ssa.c (struct var_value_d): Rename from struct currdef_d.
	Rename field 'currdef' to 'value'.  Update all users.
	(avail_exprs): New local hash table.
	(const_and_copies): New local hash table.
	(struct ssa_stats_d): Declare.
	(ssa_stats): New local variable.
	(rewrite_into_ssa): Deallocate avail_exprs and const_and_copies
	after renaming.
	Call dump_tree_ssa_stats() if -fdump-tree-ssa-stats is given.
	(rewrite_block): Document the renaming process.
	Add new local stack block_avail_exprs to keep track of expressions
	made available in this block and its children.
	(rewrite_stmts): Move body inside rewrite_block.
	(dump_tree_ssa_stats): New function.
	(debug_tree_ssa_stats): New function.
	(get_def_blocks): New function.
	(insert_phi_nodes_for): Call it.
	(rewrite_stmt): Add support for keeping track of copies, constants
	and globally redundant expressions.
	(rewrite_operand): If a pointer has been copy propagated into
	another one, rewrite INDIRECT_REF nodes of the original pointer to
	refer to the new one.
	(register_new_def): Add new argument 'var' indicating which
	variable is this new definition for.  Update all users.
	(update_indirect_ref_vuses): New function.
	(update_pointer_vuses): New function.
	(init_tree_ssa): Set variable 'ssa_stats' to zero.
	Allocate memory for 'avail_exprs' and 'const_and_copies'.
	(currdef_for): Don't mark inline.
	Call get_value_for and set_value_for.
	(set_currdef_for): Remove.  Update all users.
	(var_value_hash): Rename from currdef_hash.  Update all users.
	(var_value_eq): Rename from currdef_eq.  Update all users.
	(get_value_for): New function.
	(set_value_for): New function.
	(lookup_avail_expr): New function.
	(avail_expr_hash): New function.
	(avail_expr_eq): New function.
	(get_def_blocks_for): New function.
	(var_is_live): New function.

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

	* tree-ssa-ccp.c (likely_value): Don't assume CONSTANT if the
	statement has virtual uses.

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

	* tree-dfa.c (opf_none, opf_is_def, opf_force_vop, opf_ignore_bp):
	New flags to alter the behavior of add_stmt_operand.
	(get_expr_operands): Change operand IS_DEF with FLAGS.  Update all
	users.
	When adding a VUSE for pointer dereferences in function arguments,
	don't add a superfluous VUSE for the base pointer.
	(add_stmt_operand): Remove operands IS_DEF and FORCE_VOP.  Add
	operand FLAGS.  Update all users.

2003-03-05  Jason Merrill  <jason@redhat.com>

	* c-pretty-print.c (do_niy): Only print operands of expressions.
	* tree-pretty-print.c: Likewise.

	* c-simplify.c (simplify_decl_stmt): Only simplify DECL_SIZE_UNIT.
	* gimplify.c (simplify_array_ref_to_plus): New fn.
	(simplify_array_ref): Use it.
	(build_addr_expr_with_type): Split out from build_addr_expr.
	(simplify_compound_lval): Break out an ARRAY_REF with non-constant
	element size.

2003-03-05  Frank Ch. Eigler  <fche@redhat.com>

	* gcc.c (MFWRAP_SPEC): Remove most --wrap entries.

2003-03-03  Daniel Berlin  <dberlin@dberlin.org>

	* tree-ssa-pre.c (is_strred_cand): Temporarily disable strength
	reduction while working on bootstrapping.
	(requires_edge_placement): Reenable for now, until an insertion
	infrastructure exists that can handle critical edges.
	(count_stmts_in_bb): New function, used for verifying we do
	insertions properly.
	(update_old_new): Fix up bb heads as well.
	(do_proper_save): Handle single statement bb properly.
	Handle BB's contained in BIND_EXPRS.
	(code_motion): Count number of statements in bb before and after
	to make sure we don't screw up boundaries.
	(finalize_1): Ditto.
	(rename_2): Fix subtle rename bug.
	(phi_opnd_from_res): Do this the right way, by cloning the
	occurrence and modifying it, as every other PRE implementation
	does.
	(tree_perform_ssapre): Handle comparisons too (unary exprs
	currently disabled till load PRE is reimplemented).
	(reset_can_be_avail): Fix can_be_avail test.

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

	* doc/invoke.texi: Fix typo.

2003-02-28  Aldy Hernandez  <aldyh@redhat.com>
	    Diego Novillo  <dnovillo@redhat.com>

	* Makefile.in (OBJS): Add tree-ssa-copyprop.o.
	(tree-ssa-copyprop.o): New rule.
	(tree-ssa-ccp.o): Add dependency on $(TREE_SIMPLE_H).

	* timevar.def (TV_TREE_COPYPROP): New timevar.
	* flags.h (flag_tree_copyprop): Declare.
	* toplev.c (flag_tree_copyprop): Define.
	(f_options): Add -ftree-copyprop.
	* tree.h (tree_dump_index): Add TDI_copyprop.
	* tree-dump.c (dump_files): Add entry for -fdump-tree-copyprop.
	* doc/invoke.texi: Document -ftree-copyprop and -fdump-tree-copyprop.

	* tree-ssa-copyprop.c: New file.
	* tree-flow.h (tree_ssa_copyprop): Declare.
	* tree-optimize.c (optimize_function_tree): Call it.
	* tree-dfa.c (add_vuse): Make extern.  Update all users.

	* tree-ssa.c (mark_def_sites): VUSEs are stored in a varray of trees.

2003-02-28  Frank Ch. Eigler  <fche@redhat.com>

	* tree-mudflap.c (mudflap_enqueue_decl): Ignore extern artificial
	variable declarations.

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

	* tree-dfa.c (get_stmt_operands): INIT_EXPR nodes cannot
	appear in GIMPLE form.  Don't handle them.
	(get_expr_operands): Likewise.
	(find_vars_r): Likewise.
	* tree-ssa-ccp.c (get_rhs): Likewise.
	(set_rhs): Likewise.
	* tree-ssa-pre.c (tree_perform_ssapre): Likewise.

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

	* tree-ssa-ccp.c (ccp_fold): Fold builtins by replacing and
	restoring their arguments.

2003-02-27  Jeff Law  <law@redhat.com>

	* tree-dfa.c (find_vars_r): Clear *walk_subtrees appropriately
	to avoid useless walking of subtrees.

	* fold-const.c (nondestructive_fold_binary_to_constant): Renamed
	from nondestructive_fold_binary.  Update comments slightly.
	(nondestructive_fold_unary_to_constant): Similarly.
	(fold_relational_hi_lo): Corresponding changes.
	* tree-ssa-ccp.c (ccp_fold): Corresponding changes.
	* tree.h: Corresponding changes.

2003-02-26  Jeff Law  <law@redhat.com>

	* tree-ssa-ccp.c (ccp_fold): Also handle folding of calls to
	builtin functions.

	* fold-const.c (nondestructive_fold_binary): Handle truth ops
	when both arguments are constant (duh!).  Handle CONJ_EXPR.

2003-02-26  Daniel Berlin  <dberlin@dberlin.org>

	* flags.h: Remove flag_ip.
	* toplev.c: Ditto.
	* tree-alias-ander.c: s/flag_ip/flag_unit_at_a_time/g.
	(andersen_cleanup): Set region to null when done.
	(andersen_function_call): Check DECL_PTA_TYPEVAR, not
	DECL_SAVED_TREE.
	* tree-alias-common.c: s/SSA_DECL_P/DECL_P/g.
	(get_alias_var_decl): Remove dead code, fix bug in what is a
	local alias var.
	(find_func_aliases): Use get_alias_var, not create_fun_alias_var.
	(create_fun_alias_var): Fix to use DECL_PTA_TYPEVAR.
	Use get_alias_var rather than create_alias_var.
	(create_fun_alias_var_ptf): Ditto.
	(create_alias_vars): Ditto.
	* tree-dfa.c (compute_may_aliases): Fix check for
	create_alias_vars.
	Move deletion of alias vars back to here, from tree-ssa.c
	* tree-ssa.c (delete_tree_ssa): Remove delete_alias_vars call.

2003-02-25  Jeff Law  <law@redhat.com>
	    Diego Novillo  <dnovillo@redhat.com>

	* tree-ssa-ccp.c (likely_value): If the statement has no
	use operands, then return CONSTANT.

	* fold-const.c (nondestructive_fold_binary): Handle TRUTH_AND_EXPR
	and TRUTH_OR_EXPR.  Placeholder for TRUTH_XOR_EXPR.
	* tree-ssa-ccp.c (ccp_fold): Handle TRUTH_{AND,OR,XOR}_EXPR.
	(def_to_undefined): Re-enable VARYING->UNDEFINED state transition
	sanity check.

	* tree-ssa-ccp.c (likely_value): Renamed from may_fold_p.  Now
	returns a latticevalue indicating the likely value for the
	the RHS of the statement.
	(evaluate_stmt): Update to use likely_value instead of may_fold_p.
	Statements with UNDEFINED operands produce an UNDEFINED result.
	(set_lattice_value): Reenable VARYING->CONSTANT sanity check.

2003-02-25  Andrew MacLeod  <amacleod@redhat.com>

	* tree-cfg.c (bsi_init): Handle BIND_EXPR nodes inside a basic block.
	(bsi_next_in_bb): Likewise.

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

	* tree-cfg.c (parent_array): Remove.  Update all users.
	(struct cfg_stats_d): Add field 'num_failed_bind_expr_merges'.
	(NEXT_BLOCK_LINK): Define.
	(build_tree_cfg): Call alloc_aux_for_blocks instead of
	create_block_annotations.
	(make_blocks): Rewrite to support basic blocks that can span whole
	BIND_EXPR bodies and put control statements at the end of blocks.
	Add arguments 'next_block_link' and 'bb'.  Replace 'parent_block'
	with 'parent_stmt'.  Update all users.
	(make_loop_expr_blocks): Replace argument 'parent_block' with 'entry'.
	Add argument 'next_block_link'.  Update all users.
	Don't create an empty latch block.
	(make_cond_expr_blocks): Add argument 'next_block_link'.  Update
	all users.
	(make_switch_expr_blocks): Likewise.
	(make_bind_expr_blocks): Replace 'parent_block' with 'parent_stmt'.
	Add argument 'next_block_link' and 'entry'.
	Don't create a new block for the BIND_EXPR node.  Extend the
	existing block.
	(add_stmt_to_bb): New function.
	(create_bb): Remove argument 'parent_block'.  Update all users.
	(create_block_annotations): Remove.  Update all users.
	(make_edges): Don't handle BIND_EXPR nodes.
	(make_ctrl_stmt_edges): Don't create an extra edge to the body of
	the switch.
	(make_loop_expr_edges): Only create an edge to the body of the
	loop.
	(remove_unreachable_block): Add more documentation for the special
	case where a control statement entry is unreachable but its body
	isn't.
	Remove the basic block annotation from the head and end containers
	in the block.
	(disconnect_unreachable_case_labels): Don't keep the edge that goes
	to the BIND_EXPR at the start of the switch body.
	(dump_tree_bb): Call is_latch_block_for.
	(dump_cfg_stats): Show stats about basic blocks that could not span
	beyond the end of a BIND_EXPR body.
	(successor_block): Use NEXT_BLOCK_LINK if the block is the last
	inside a control structure.
	(is_ctrl_stmt): Update documentation.
	(stmt_starts_bb_p): Add new argument 'prev_t'.  Update all users.
	Only labels may start a new basic block.
	(stmt_ends_bb_p): Add LOOP_EXPR, TRY_FINALLY_EXPR and
	TRY_CATCH_EXPR to the list.
	(latch_block): Remove.
	(is_latch_block_for): New function.
	(set_bb_for_stmt): Reformat some code.

	* tree-flow-inline.h (set_parent_block): Remove.  Update all users.
	(parent_stmt): New function.
	(parent_block): Call it.

	* tree-flow.h (struct stmt_ann_d): Add field 'parent_stmt'.
	(struct bb_ann_d): Remove block parent_block.

	* tree-pretty-print.c (dump_generic_node): Don't handle empty latch
	nodes.

	* tree-ssa-ccp.c (def_to_undefined): Temporarily disable check for
	VARYING->UNDEFINED transitions.
	(set_lattice_value): Likewise for VARYING->CONSTANT transitions.

	* tree-ssa-dce.c (mark_necessary): Use parent_stmt() to traverse
	all the control statements that contain the current
	statement.
	(makr_control_parent_necessary): Remove.  Update all users.
	(stmt_useful_p): Add BIND_EXPR to the list of useful
	statements.
	(process_worklist): Check that the statement is
	associated to a basic block.
	(remove_dead_stmt): Don't assume that the block has a
	postdominator.

2002-02-20  Daniel Berlin  <dberlin@dberlin.org>

	* tree-alias-ander.c: Store cached ptsets in the typevar, not
	a seperate hash table.
	(ptset_map): Removed;
	(ptset_map_eq): Ditto.
	(ptset_map_hash): Ditto.
	(andersen_init): Remove ptset_map.
	(andersen_cleanup): Ditto.
	(andersen_add_var): Ditto.
	(andersen_add_var_asm): Ditto.
	(andersen_may_alias): Ditto.
	* tree-alias-common.c: Store typevars for DECL nodes in the tree_decl
	structure.
	(get_alias_var_decl): Use DECL_PTA_TYPEVAR for DECL's.
	(create_alias_var): Ditto.
	(find_func_aliases): CONST functions don't affect aliasing either.
	(ptr_may_alias_var): Don't call get_base_symbol.
	Remove decl_function_context, use DECL_CONTEXT instead.
	For DECL's, use DECL_PTA_TYPEVAR.
	* tree-alias-type.c (struct alias_typevar_aterm): Add ptset member.
	(ALIAS_TVAR_PTSET): New macro.
	* tree.h (DECL_PTA_TYPEVAR): New macro.
	(struct tree_decl): Add typevar member.

2003-02-20  Jeff Law  <law@redhat.com>

	* c-simplify.c (simplify_decl_stmt): Call set_vla_decl on the
	temporary holding the size and unit size for a VLA.  Minor
	formatting fixes.

	* ssa.c: Revert caching of immediate dominators change made on
	Jan 28, 2003.

	* tree-dfa.c: Fix comment.

2003-02-20  Jeff Law  <law@redhat.com>

	* tree-cfg.c (remove_bb): Update PHI nodes as edges are removed.
	(cleanup_cond_expr_graph): Likewise.
	(cleanup_switch_expr_graph): Likewise.
	(disconnect_unreachable_case_labels): Likewise.

	* tree-ssa-dce.c (mark_control_parent_necessary): Be much more
	selective about what statements in the control parents are marked
	as necessary.

	* tree-dfa.c (INDIRECT_REFs and ADDRESSABLE_VARs varrays): Replace
	with a single ALIASED_OBJECTs set of varrays.
	(dump_dfa_stats): Corresponding changes.
	(compute_may_aliases, dump_alias_info): Likewise.
	(compute_alias_sets): Likesise.  Update comments.    Register
	alias sets for all potentially aliased objects which are stored.
	Check each potentially aliased object with the registered alias
	sets.
	(register_alias_set): If DEREF aliases a single registered _DECL,
	then replace the _DECL's entry with DEREF.
	(find_alias_for): Update comments.  Do not stop the search when
	an alias is found.  There may be multiple entries with conflicting
	alias sets.
	(struct walk_state): New structure for statement walker callbacks.
	(find_vars_r): Add logic to track loads and stores of potentially
	aliased objects separately.  Various changes related to
	using a single set of varrays for all aliased objects.
	(add_referenced_var): Record in the var's annotation if the
	var is read or written.  Various changes related to using a
	single set of varrays for all the aliased objects.
	(add_stmt_operand): Only set may_point_to_global_mem for INDIRECT_REFs.
	* tree-flow.h (struct var_ann_d): Add new fields indicating if
	the var is loaded or stored.  Explicitly note unused bitfield
	entries.

2003-02-19  Jeff Law  <law@redhat.com>

	* fold-const.c (fold_negate_const): New function.  Broken out of
	the generic fold code.
	(fold_abs_const, fold_relational_const): Likewise.
	(fold_relational_hi_lo): Likewise.
	(nondestructive_fold_unary, nondestructive_fold_binary): Likewise.
	(fold): Use fold_negate_const, fold_abs_const, fold_relational_const,
	and fold_relational_hi_lo.
	* tree.h (nondestructive_fold_unary): Declare.
	(nondestructive_fold_binary): Declare.
	* tree-ssa-ccp.c (ccp_fold): New function.
	(add_control_edge): Fix trivial formatting bug.
	(evaluate_stmt): Rework to use ccp_fold instead of copying
	statements.

2003-02-18  Jeff Law  <law@redhat.com>

	* tree-ssa-ccp.c (visit_assignment): For simple copies, copy the
	lattice values.
	(defs_to_undefined): Add missing abort.
	(replace_uses_in): Do not do a replacement if it would create
	non GIMPLE trees.

2002-02-14  Jeff Law  <law@redhat.com>

	* tree-ssa-ccp.c (def_to_undefined): Improve sanity checking code
	so that it can detect invalid VARYING->UNDEFINED transitions.
	(set_lattice_value): Improve sanity checking code so that it
	does not trip on valid VARYING->CONSTANT transitions.

	* tree-flow.h (struct stmt_ann_d): Add new field in_ccp_worklist.
	* tree-ssa-ccp.c (simulate_stmt): Renamed from simulate_def_use_edges.
	(add_var_to_ssa_edges_worklist): New function.  Only add statements
	to the ssa_edges worklist if they are not already on the worklist.
	(def_to_undefined, def_to_varying, set_lattice_value)
	(tree_ssa_ccp): Only reevaluate the statement if in_ccp_worklist
	is set for the element popped off the ssa_edges worklist.
	(simulate_statement): Simplify now that ssa_edges is a worklist
	of statements to reevaluate rather than a worklist of defs
	that need their immediate uses reevaluated.
	(visit_stmt): Clear in_ccp_worklist.

	* tree-ssa-ccp.c (def_to_undefined): Directly store the new
	lattice values rather than call set_value.
	(def_to_varying): Likewise.
	(set_lattice_value): Likewise.

	* tree-ssa-ccp.c (def_to_undefined): Add some state transition
	sanity checking.  Avoid calling set_value if nothing changed.
	(def_to_varying): Avoid calling set_value if nothing changed.
	(set_lattice_value): Add some state transition sanity checking
	for transitions into the CONSTANT state.  If the object's
	"constant" value has changed to a new constant value, then the
	object has a VARYING value.

	* tree-ssa-ccp.c (tree_ssa_ccp): Work through the entire
	ssa_edges worklist each iteration through the main loop.

2002-02-13  Jeff Law  <law@redhat.com>

	* tree-ssa-ccp.c: Fix comment formatting glitches.

	* tree-ssa-ccp.c (may_fold_p): New function.  Returns nonzero if
	the given statement may fold after replacement of operands with
	constants.
	(evaluate_stmt): Only create a copy of the statement if there is
	a reasonable chance the statement will fold.

2002-02-13  Diego Novillo  <dnovillo@redhat.com>

	* Makefile.in (OBJS): Add tree-ssa-pre.o.

2003-02-13  Daniel Berlin  <dberlin@dberlin.org>

	* tree-dfa.c (create_stmt_ann): Do stmt part of common annotation.
	* tree-flow-inline.h (tree_stmt): Return statement tree is part of.
	* tree-flow.h (struct bb_ann_d): Add ephi_nodes.
	* tree-optimize.c (optimize_tree): Activate SSAPRE again.
	* tree-pretty-print.c (debug_generic_expr): New function.
	(debug_generic_stmt): Ditto.
	(dump_generic_node): Pretty print EUSE's, EREF's,  and EPHI's.

	* tree-ssa-pre.c: Rewrite almost entirely. Now performs more
	strength reduction, EPHI minimization, and keeps SSA up to date.
	* tree.c (tree_size): Handle EUSE, EPHI, EREF nodes.
	(tree_node_structure): Ditto.
	(ephi_node_elt_check_failed): New function.
	* tree.def: Add EUSE_NODE, ELEFT_NODE, EKILL_NODE, EPHI_NODE,
	EEXIT_NODE.
	* tree.h (EREF_NODE_CHECK): New.
	(EPHI_NODE_ELT_CHECK): New.
	(struct tree_eref_common): New.
	(struct tree_euse_node): New.
	(struct tree_ephi_node): New.
	(union tree_node): Add euse, eref, ephi members.
	(enum tree_node_structure): Add TS_EPHI_NODE, TS_EUSE_NODE,
	TS_EREF_NODE.

2003-02-13  Daniel Berlin <dberlin@dberlin.org>
	    Andreas Jaeger  <aj@suse.de>

	* tree-flow.h: Add some garbage collector marks.

2003-02-12  Jeff Law  <law@redhat.com>

	* Makefile.in (ssa.o): Depends on $(TREE_H) and tree-flow.h
	* ssa.c: Include tree.h and tree-flow.h.
	(compute_dominance_frontiers_1): Use the sparse bitmap
	of dominator children from the basic block's annotation
	if it's available.  Otherwise build the sparse bitmap
	using the result of get_dominated_by.
	* tree-ssa.c (rewrite_into_ssa): Reorder things slightly so
	that we can use the cached dominator children computed
	by mark_def_sites in compute_dominance_frontiers.

2003-02-12  Andreas Jaeger  <aj@suse.de>

	* tree-dfa.c (dump_alias_info): Cast variable of size_t properly.

2003-02-12  Daniel Berlin  <dberlin@dberlin.org>

	* tree-dfa.c (find_may_aliases_for): Remove
	(compute_may_aliases): Always call compute_alias_sets.

2003-02-10  Jeff Law <law@redhat.com>

	* ssa.c (compute_dominance_frontiers_1): Use a sparse bitmap
	for the frontiers.
	(compute_dominance_frontiers): Corresponding changes.
	(convert_to_ssa): Similarly.  Convert the sparse bitmap to
	a simple bitmap to avoid lots of collateral damage.
	* ssa.h (compute_dominance_frontiers): Update prototype.
	* tree-ssa.c (added, in_work): Kill, no longer needed.
	(struct def_blocks_d): Add new bitmap (livein_blocks).
	(rewrite_into_ssa): Make dominance frontiers be a sparse
	bitmap instead of a simple bitmap.  Rename the "nonlocals"
	simple bitmap to "globals".  Pass it into mark_def_sites.
	(compute_global_livein): New function.
	(mark_def_sites): Also keep track of variables which are
	used before they are set.  Allow caller to allocate and
	pass in a simple bitmap for global variables.  Process
	items defined in the statement last.
	(set_def_block): Also allocate bitmap for globals.
	(set_livein_block): New function.
	(def_blocks_free): Free def_blocks correctly.  Also free
	livein_blocks.
	(debug_def_blocks_r): Also dump the livein_blocks.
	(insert_phi_nodes): Simplify now that we don't need the
	added and in_work varrays.  Accept DFS as a sparse bitmap
	instead of a simple bitmap.
	(insert_phi_nodes_for): Rework significantly.  Pre-compute all
	the insertion points for semi-pruned form.  While computing those
	insertion points keep track of how many phi vector entries
	would be needed at those insertion points.  When the number of
	entries gets large (32), compute global life information and
	use that to further pruned the number of PHI insertion points
	necessary.

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

	* tree-dfa.c (find_vars_r): Assume that the RHS of an INDIRECT_REF,
	that is also an SSA variable, is a VAR_DECL.
	(get_virtual_var): Handle INDIRECT_REF nodes that are not valid SSA
	variables.

	* tree-ssa-dce.c (stmt_useful_p): Revert kludge in previous commit.
	VA_ARG_EXPR nodes are not inherently live.

	* tree-ssa.c (mark_def_sites): Don't process the LHS of assignments
	twice.
	The operand of a virtual definition constitutes a use of the
	variable which should be considered a non-local if it had not been
	killed inside the block.

	* tree.h (SSA_VAR_P): Only return true for INDIRECT_REFs if their
	operand is a _DECL node.

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

	* config/rs6000/t-rs6000 (simplify-rtx.o): Compile with -Wno-error.

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

	* toplev.c (parse_options_and_default_flags): Enable SSA DCE by
	default.

	* tree-dfa.c (get_expr_operands): Recurse into LHS of an ARRAY_REF
	when it's not a regular variable.  Always recurse into the RHS.
	(add_stmt_operand): Set may_point_to_global_mem for pointers that
	are assigned expressions that may reference global memory.  Also
	set its dereference variable to be an alias of global memory.
	(dump_variable): Show may_point_to_global_mem flag.
	(compute_alias_sets): Also dump all referenced variables when
	dumping alias information.
	(add_may_alias): Check for global memory aliasing.
	(may_access_global_mem_p): Rename from may_access_global_mem.
	Return true if the expression is a variable that may point to or
	alias global memory.
	(add_referenced_var): Pointer arguments and global pointers may
	point to global memory.
	(set_may_alias_global_mem): Move ...
	* tree-flow-inline.h (set_may_alias_global_mem): ... here.
	(set_may_point_to_global_mem): New function.
	(may_point_to_global_mem_p): New function.

	* tree-ssa-dce.c (stmt_useful_p): VA_ARG_EXPRs are inherently live.
	* tree-ssa.c (rewrite_into_ssa): Don't call dump_referenced_vars.

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

	* tree-dfa.c (struct alias_tags, alias_tags, num_alias_tags):
	Remove.  Update all users.
	(struct alias_set_d): New.
	(alias_sets): New file local variable.
	(compute_alias_sets): New function.
	(compute_may_aliases): Call it when not doing points-to analysis.
	(register_alias_set): New function.
	(find_alias_for): New function.
	(may_alias_p): Declare static.
	Don't assume that VAR may not be aliased if it's a non-addressable
	_DECL.
	If VAR and PTR are aggregate types, check if they can have a field
	that points to the other one.
	(find_may_aliases_for): Move handling of global memory aliasing ...
	(add_may_alias): ... here.
	Also accept the base symbols for the variable and its alias.
	(register_new_alias): Remove.  Update all users.
	(find_alias_tag): Remove.  Update all users.
	(find_vars_r): Update VAR after re-writing *TP when sharing
	INDIRECT_REF nodes.
	* tree-flow.h (may_alias_p): Remove declaration.

	* tree-ssa.c (rewrite_into_ssa): Include referenced variables in
	default debug dumps.

	Support for VLAs.

	* tree-dfa.c (find_vla_decls): New function.
	(compute_may_aliases): Call it.
	(find_vla_decls_r): New function.
	(dump_variable): Show whether the variable is used in a VLA
	declaration.
	* tree-flow-inline.h (is_vla_decl): New function.
	(set_vla_decl): New function.
	* tree-flow.h (struct var_ann_d): Add bitfield 'is_vla_decl'.
	* tree-ssa-dce.c (need_to_preserve_store): Return true if SYM is
	used inside a VLA declaration.

2003-02-05  Andrew MacLeod  <amacleod@redhat.com>

	* Makefile.in : Include new file tree-iterator.h in tree-simple.h
	* gimplify.c (simplify_cleanup_point_expr): Use tsi_ rather than gsi_.
	* tree-cfg.c (make_blocks, remove_bb): Use tsi_ not gsi_ routines.
	(bsi_remove): Renamed from gsi_remove, use bsi_ routines.
	(successor_block, first_exec_stmt): Use tsi_ not gsi_ routines.
	(first_stmt, last_stmt, last_stmt_ptr): Use bsi_ not gsi_ routines.
	(bsi_init): Split out from bsi_start.
	(bsi_start): Renamed from gsi_start_bb, use bsi_ routines.
	(bsi_next_in_bb): Moved from tree-flow-inline.h and renamed from
	gsi_step_in_bb. Also verify BB of new stmt.
	* tree-dfa.c (compute_immediate_uses, dump_immediate_uses,
	collect_dfa_stats, compute_may_aliases): Use block_stmt_iterator.
	* tree-flow-inline.h (gsi_step_in_bb): Moved to tree-cfg.c
	(bsi_end_p): Renamed from gsi_end_bb_p.
	(bsi_next): renamed from gsi_step_bb
	(bsi_prev): New function.
	(bsi_stmt_ptr): Block version of gsi_stmt_ptr.
	(bsi_stmt): Block version of gsi_stmt.
	(bsi_container): Block version of gsi_container.
	* tree-flow.h (block_stmt_iterator): New iterator type.
	* tree-iterator.h: New include file for tree_iterator.
	* tree-simple.h : Include tree-iterator.h
	(gimple_stmt_iterator, gsi_start, gsi_end_p, gsi_stmt_ptr,
	gsi_stmt, gsi_container): Move to tree-iterator.h and rename to tsi_.
	(gsi_step): Move to tree-iterator.h and renamed to tsi_next.
	* tree-ssa-ccp.c (simulate_block, substitute_and_fold): Use block
	iterators instead of gimple_stmt_iterator.
	* tree-ssa-dce.c (mark_control_parent_necessary, find_useful_stmts,
	remove_dead_stmts, remove_dead_stmt): Use block_stmt_iterator.
	* tree-ssa.c (mark_def_sites, rewrite_out_of_ssa, rewrite_stmts): Use
	block_stmt_iterator.

2003-02-04  Daniel Berlin  <dberlin@dberlin.org>

	* tree-alias-common.c (get_alias_var_decl): If it's a global var,
	make sure it doesn't get added to local_alias_vars.
	(get_name): Return the right name for FUNCTION_DECL's.

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

	* tree-dfa.c (add_stmt_operand): Do not add a VUSE for a pointer
	when clobbering its associated INDIRECT_REF variable.

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

	* config/rs6000/t-rs6000 (jump.o, regmove.o, c-typeck.o, cfgrtl.o,
	combine.o, fold-const.o, ifcvt.o, reload1.o, rtlanal.o,
	cp/decl2.o, cp/pt.o, f/where.o, java/expr.o, objc/objc-act.o,
	rs6000.o, insn-emit.o): Compile with -Wno-error.

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

	* tree-cfg.c (make_blocks): Don't always start a new block with
	COND_EXPR and SWITCH_EXPR statements.
	Call stmt_ends_bb_p to determine if the current statement should be
	the last in the block.
	(make_cond_expr_blocks): Second argument is now the entry block
	to the conditional.
	(make_switch_expr_blocks): Second argument is now the entry block
	to the switch.
	(make_edges, make_ctrl_stmt_edges, make_loop_expr_edges,
	cleanup_control_flow, cleanup_cond_expr_graph,
	cleanup_switch_expr_graph, disconnect_unreachable_case_labels,
	find_taken_edge, successor_block, latch_block, is_latch_block,
	switch_parent): Work with the last statement of the block, not the
	first.
	(is_ctrl_altering_stmt): Pre-compute the code of the statement.
	(stmt_starts_bb_p): Declare file local.
	Don't call is_ctrl_stmt.  Check if T is a LOOP_EXPR instead.
	(stmt_ends_bb_p): New function.

	* tree-flow.h (stmt_starts_bb_p): Remove declaration.

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

	* tree-dfa.c (find_vars_r): Share INDIRECT_REF nodes whose operand
	is a VAR_DECL.
	(add_referenced_var): Add additional argument 'sym'.  Update all users.
	Don't call get_base_symbol.
	(add_indirect_ref_var): Rename argument 'var' to 'ptr'.
	(htab_hash_var): Remove.  Update all users to use htab_hash_pointer.
	(htab_var_eq): Remove.  Update all users to use htab_eq_pointer.

	* tree-flow-inline.h (var_ann): Don't retrieve the annotation of
	the base pointer for INDIRECT_REF variables.
	(is_aliased): Remove.  Update all users.
	(is_dereferenced): Remove.  Update all users.
	(same_var_p): Remove.  Update all users to use pointer equality.

	* tree-simple.c (get_base_symbol): Convert tail recursion into
	iteration.

	* tree-ssa.c (rewrite_out_of_ssa): Add FIXME note about overlapping
	live ranges for different versions of the same variable.

2003-02-03  Jeff Law  <law@redhat.com>

	* tree-dfa.c (add_referenced_var): Annotate each item in the
	REFERENCED_VARS varray with a unique id.
	* tree-flow.h (struct var_ann_d): Add new uid field.
	* tree-ssa.c (mark_def_sites): Compute the set of variables
	live across basic blocks and return them in an sbitmap.
	(insert_phi_nodes): Use the set of nonlocal variables computed
	by mark_def_sites to reduce the number of PHI nodes inserted.
	(rewrite_into_ssa): Updated to deal with changes in
	insert_phi_nodes and mark_def_sites.  Free the sbitmap returned
	by mark_def_sites.

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

	* c-common.h (GOTO_DESTINATION): Remove.  Fix botched
	merge.

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

	Fix warnings to allow bootstrapping with -Werror.

	* Makefile.in (c-semantics.o-warn): Add -Wno-error.
	(emit-rtl.o-warn): Likewise.
	(profile.o-warn): Likewise.
	(tree.o-warn): Likewise.
	(OBJS): Remove simple-break-elim.o and simple-goto-elim.o.
	* c-pretty-print.c (print_function_decl): Remove unused function.
	* bitmap.c (bitmap_last_set_bit): Initialize variable 'word'.
	* c-typeck.c (build_binary_op): Initialize variable 'type'.
	* combine.c (combine_simplify_rtx): Initialize variable 'reversed'.
	(make_compound_operation): Initialize variable 'i'.
	* dwarf2out.c (dwarf2out_finish): Initialize variable 'context'.
	* expr.c (store_constructor): Initialize variables 'lo', 'hi',
	'startb' and 'endb'.
	(expand_expr): Initialize variable 'op0'.
	* fold-const.c (fold): Initialize variable 'tem'.
	* profile.c (branch_prob): Initialize variable 'prev_file_name'.
	* reload.c (find_equiv_reg): Initialize variables 'valtry and
	'valueno'.
	* rtlanal.c (get_jump_table_offset): Initialize variable 'set'.
	* ssa-ccp.c (ssa_const_prop): Fix sign mismatch warning.
	* varasm.c (output_constant_def): Initialize variable 'defstr'.
	* gimplify.c (simplify_expr): Initialize variables
	'saved_input_filename' and 'saved_lineno'.
	(simplify_compound_lval): Initialize variable 'code'.
	* tree-alias-ander.c (pta_bottom): De-ansify.
	(andersen_cleanup): Remove unused variables.
	(andersen_heap_assign): Mark argument lhs ATTRIBUTE_UNUSED.
	(pta_bottom): Remove unused function.
	(pta_get_ptsize): Remove unused function.

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

	* tree-dfa.c (get_expr_operands): Add a VUSE for the dereference of
	every pointer passed in a function call.
	Move code to add an operand for the base pointer of an
	INDIRECT_REF ...
	(add_stmt_operand): ... here.
	Add a VUSE for the base pointer of every INDIRECT_REF variable.
	(find_may_aliases_for): Fix starting index for the loop that scans
	INDIRECT_REFs for aliasing.
	Factor code that marks two variables aliased into
	register_new_alias.
	(register_new_alias): New function.
	(may_alias_p): Handle aliasing of structure fields.
	(add_may_alias): Fix documentation.
	(find_vars_r): Factor code that adds a new referenced variable into
	add_referenced_var.
	(add_referenced_var): New function.
	(add_indirect_ref_var): New function.
	(get_virtual_var): Handle variables wrapped in SSA_NAMEs.
	(set_may_alias_global_mem): Move from ...
	* tree-flow-inline.h: ... here.

	* tree-ssa-dce.c (need_to_preserve_store): CALL_EXPRs are
	implicitly live.  VA_ARG_EXPRs are not.
	(stmt_useful_p):

	* tree.h (SSA_NAME_VAR): Rename from SSA_NAME_DECL.  Update all
	users.
	(struct tree_ssa_name): Rename field 'decl' to 'var'.  Update all
	users.
	(SSA_DECL_P): Accept only VAR_DECLs and PARM_DECLs possibly wrapped
	inside an SSA_NAME node.
	(SSA_VAR_P): Also accept SSA_NAME nodes.

2003-02-01  Daniel Berlin  <dberlin@dberlin.org>

	* Makefile.in (tree-ssa-pre2.o): Remove accidental addition.

2003-01-31  Diego Novillo  <dnovillo@redhat.com>

	* tree-cfg.c (find_taken_edge_cond_expr): New function.
	(find_taken_edge_switch_expr): New function.
	(value_matches_some_label): New function.
	(find_taken_edge): Re-structure to use the three new functions.

2003-01-30  Jason Merrill  <jason@redhat.com>

	* gimplify.c (simplify_function_tree): Set TREE_SIDE_EFFECTS on
	the BIND_EXPR wrapper.

2003-01-30  Diego Novillo  <dnovillo@redhat.com>

	* tree-dfa.c (call_may_clobber): New function.
	(get_expr_operands): Call it.
	(find_vars_r): Call it.

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

	* tree-dfa.c (struct alias_tags): New.  Collector for key information
	regarding alias tags.
	(indirect_refs_base, indirect_refs_alias_set): New varrays.
	(addressable_vars_base, addressable_vars_alias_set): Likewise.
	(compute_may_aliases): Initialize and finalize the new varrays.
	Update allocation of alias tags information.
	(find_may_aliases_for): Extract base symbols and alias set
	information for V1 and V2 from the virtual arrays and store
	them into local variables.  Pass them as necessary to
	may_alias_p, may_access_global_mem, find_alias_tag.  Add base
	symbol and alias set when creating a new alias tag.
	(find_vars_r): Fill in new varrays as needed.
	(may_alias_p): Add new arguments for base and alias set of the
	two origianl incoming arguments.  No longer call get_base_symbol
	or get_alias_set.
	(find_alias_tag,  may_access_global_mem): Similarly.
	(add_stmt_operand): Update to pass additional argument to
	may_access_global_mem.
	(dump_alias_info): Update to deal with new alias tag structure.
	* tree-flow.h (may_alias_p): Update prototype with new arguments.
	* tree-ssa-pre.c (process_left_occs_and_kills): Update to pass
	new arguments to may_alias_p.

2003-01-30  Daniel Berlin  <dberlin@dberlin.org>

	Remove all traces of steensgaard's algorithm.
	* tree-alias-steen.c: Removed.
	* tree-alias-steen.h: Ditto.
	* tree-alias-ecr.c: Ditto.
	* tree-alias-ecr.h: Ditto.
	* disjoint-set.c: Ditto.
	* disjoint-set.h: Ditto.
	* Makefile.in: Remove removed files.
	* c-config-lang.in: Ditto.
	* gengtype.c: Ditto.
	* tree-alias-common.c: Don't use steen_alias_ops anymore.
	* toplev.c: Remove help text and steen option.
	* tree-alias-common.h: Remove PTA_STEEN.
	* tree-alias-type.c: Remove all steensgaard related types and
	functions.
	* tree-alias-type.h: Ditto.

2003-01-30  Diego Novillo  <dnovillo@redhat.com>

	* tree-cfg.c (struct cfg_stats_d): New.
	(cfg_stats): New file local.
	(build_tree_cfg): Start TV_TREE_CFG timer before allocating memory.
	Initialize cfg_stats.
	(make_blocks): Count coalesced label blocks.
	(dump_tree_cfg): Call dump_cfg_stats if TDF_STATS is enabled.
	(dump_cfg_stats): New.
	(debug_cfg_stats): New.

	* tree-dfa.c (SCALE, LABEL, PERCENT): Move ...
	* tree-flow.h: ... here

2003-01-29  Diego Novillo  <dnovillo@redhat.com>

	* tree-cfg.c (make_blocks): Do not start a new block if the
	previous statement and the current statement are labels of the same
	kind.

2003-01-29  Diego Novillo  <dnovillo@redhat.com>

	* tree-cfg.c (parent_array): Make file local.
	(label_to_block_map): New file local variable.
	(build_tree_cfg): Initialize label_to_block_map.
	(make_edges): Don't pre-scan all the blocks looking for blocks with
	labels.
	(make_exit_edges): Remove argument label_to_block_map.  Update all
	callers.
	(make_goto_expr_edges): Likewise.
	(dump_tree_bb): Check that the block has a valid annotation.
	(set_bb_for_stmt): If the statement is a label, add the label to
	the label_to_block_map.

	* tree-pretty-print.c (dump_vops): Check that the block has a valid
	annotation.

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

	* tree-dfa.c (find_may_aliases_for): Just accept the index of
	the current indirect_ref.  Caller updated.
	(num_indirect_refs, num_addressable_vars): New variables.
	(indirect_refs, addressable_vars): New varrays.
	(dump_dfa_status): Dump info on the indirect refs and
	addressable vars.
	(dump_alias_info): Similarly.
	(compute_may_aliases): Initialize and finalize the new virtual
	arrays and hash tables for indirect refs and addressable vars.
	Include setup/teardown in the cost for alias analysis.
	(find_may_aliases_for):  Split main loop into two.  The first
	walks over the indirect refs and takes advantage of the
	symmetric properties of the aliasing relationship to avoid
	useless work.  The second loop iterates over the addressable
	variables.
	(find_vars_r): Rework to build all three arrays we need.

2003-01-29  Andreas Jaeger  <aj@suse.de>

	* tree-alias-common.c (find_func_aliases): Remove unused variable.
	(display_points_to_set_helper): #if 0 function to avoid warning
	about unused function.

	* tree-alias-ecr.c (ECR_new): Remove ISO C style function
	definition.
	* disjoint-set.c (disjoint_set_new): Likewise.

2003-01-29  Frank Ch. Eigler  <fche@redhat.com>

	* tree-mudflap.c (mx_xfn_indirect_ref): Use a stack of flags for
	tracking pointer dereference reads vs writes.
	(mf_build_check_statement_for): Pass access-type value to __mf_check.
	* c-mudflap.c (mflang_register_call): Adapt to mf-runtime.h API change.

2003-01-29  Diego Novillo  <dnovillo@redhat.com>

	* Makefile.in (ssa.o): Add dependency on $(TIMEVAR_H).
	* timevar.def (TV_DOM_FRONTIERS): Define.
	* ssa.c (compute_dominance_frontiers): Use.

2003-01-29  Diego Novillo  <dnovillo@redhat.com>

	* tree-ssa-dce.c (remove_dead_stmt): Fix uninitialized use
	warning.

2003-01-28  Diego Novillo  <dnovillo@redhat.com>

	* timevar.def (TV_TREE_SSA_REWRITE_BLOCKS): Adjust legend.
	* tree-ssa.c (rewrite_into_ssa): Use TV_TREE_SSA_REWRITE_BLOCKS.
	(mark_def_sites): Add comment.

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

	* ssa.c (compute_dominance_frontiers_1): Use get_dominated_by
	to avoid useless walks over all the basic blocks.  Use cache
	of immediate dominators to avoid silly calls to get_immediate_dominator.
	Do not clear elements of the frontiers bitmap.
	(compute_dominance_frontiers): Compute cache of immediate
	dominators and pass it to compute_dominance_frontiers_1.  Clear
	the entire vector of frontiers bitmaps.

	* timevar.def (TV_TREE_SSA_REWRITE_BLOCKS): Renamed from
	TV_TREE_BUILD_SSA.
	(TV_TREE_SSA_OTHER): New timevar.
	* tree-ssa.c (rewrite_into_ssa): Updated.  Use new TV_TREE_SSA_OTHER
	timevar.

	* tree.h (LABEL_DECL_INDEX): Define for use by CFG builder.
	* tree-cfg.c (make_exit_edges): Accept and pass though label to
	block mapping array.
	(make_goto_expr_edges): For simple gotos, lookup the destination
	in the label to block mapping array.  Zap old slow code to
	handle simple gotos.
	(make_edges): Build the label to block mapping array.

	* tree.h (PHI_NODE_ELT_CHECK): Provide version when ENABLE_CHECKING
	is not defined.

2003-01-28  Diego Novillo  <dnovillo@redhat.com>

	* tree-flow-inline.h (parent_block, set_parent_block, phi_nodes):
	Assume that blocks always have valid annotations.
	(add_dom_child): New function.
	(dominator_children): New function.

	* tree-flow.h (struct bb_ann_d): Add field 'dom_children'.

	* tree-ssa.c (mark_def_sites): Add parameter 'idom'.
	Add each block BB to the set of dominator children of BB's
	immediate dominator.
	(rewrite_block): Remove 'idom' parameter.
	Recurse into blocks set in the dominator children bitmap.

2003-01-28  Diego Novillo  <dnovillo@redhat.com>

	* flags.h (flag_disable_tree_ssa): New flag.
	* c-decl.c (c_expand_body): Use it.
	* toplev.c: Declare it.
	(f_options): Add help text for -fdisable-tree-ssa.
	* doc/invoke.texi: Add documentation for -fdisable-tree-ssa.

2003-01-28  Diego Novillo  <dnovillo@redhat.com>

	* Makefile.in (TREE_FLOW_H): Add dependency on $(HASHTAB_H)
	(OBJS): Temporarily remove tree-ssa-pre.o.
	(tree-ssa.o, c-decl.o): Add dependency on $(TREE_DUMP_H).

	* c-decl.c: Include tree-dump.h

	* c-pretty-print.c (dump_c_node): Fix rendering of GOTO_STMTs to
	computed locations.
	(op_prio): Don't abort on unknown operators.

	* c-simplify.c (mostly_copy_tree_r): Don't copy statement
	annotations.

	* gimplify.c (simplify_addr_expr): Mark the RHS of the simplified
	ADDR_EXPR addressable.
	(mostly_copy_tree_r): Don't copy statement annotations.

	* old-tree-inline.c (walk_tree): Handle SSA_NAME nodes.

	* timevar.def (TV_TREE_RDEFS): Remove.
	(TV_TREE_BUILD_SSA): Define.
	(TV_TREE_DFA): Define.

	* tree-cfg.c: Update copyright notices.
	Remove doxygen markers everywhere.
	(remove_unreachable_block): New local function
	(remove_unreachable_blocks): Call it.
	(remove_bb): Rename from remove_tree_bb.  Update all callers.
	(validate_loops): Remove unused function.
	(block_invalidates_loop): Remove unused function.
	(remove_stmt): Invalidate the defining statement of all the
	definitions made by the statement.
	Remove the annotation before replacing the statement with
	empty_stmt_node.

	* tree-dfa.c: Update copyright notices.
	Remove doxygen markers everywhere.
	(struct clobber_data_d): Remove existing fields.  Add fields 'stmt'
	and 'prev_vops'.  Update all users.
	(alias_tags): Rename from alias_leaders.
	(num_alias_tags): Rename from num_alias_leaders.
	(struct dfa_stats_d): Declare.
	(struct dfa_counts_d): Remove.  Update all users.
	(TRM_*): Remove.  Update all users.
	(find_tree_refs): Remove.  Update all users.
	(get_stmt_operands): Rename from find_refs_in_stmt.  Update all users.
	(get_expr_operands): Rename from find_refs_in_expr.  Update all users.
	(add_stmt_operand): New function.
	(set_def): New function.
	(add_use): New function.
	(add_vdef): New function.
	(add_vuse): New function.
	(create_phi_node): New function.
	(copy_stmt): New function.
	(compute_immediate_uses): New function.
	(compute_immediate_uses_for): New function.
	(compute_reached_uses): New function.
	(compute_reaching_defs): New function.
	(add_immediate_use): New function.
	(create_var_ann): New function.
	(create_stmt_ann): New function.
	(dump_immediate_uses): New function.
	(debug_immediate_uses): New function.
	(dump_immediate_uses_for): New function.
	(debug_immediate_uses_for): New function.
	(create_ref_list, empty_ref_list, add_ref_to_list_begin,
	add_ref_to_list_end, add_list_to_list_begin, add_list_to_list_end,
	find_list_node, rli_start, rli_start_last, rli_start_at,
	rli_delete, add_ref_to_list_after, tree_ref_size, create_ref,
	add_ephi_arg, add_referenced_var, replace_ref_with,
	try_replace_ref_with, replace_ref_r, replace_ref_stmt_with,
	remove_ref, remove_def, reset_def_def_links, replace_phi_arg_with,
	create_tree_ann, function_may_recurse_p, dump_ref, debug_ref,
	dump_ref_list, dump_ref_array, debug_ref_list, debug_ref_array,
	dump_phi_args, dump_if_different, count_tree_refs, ref_type_name,
	ref_defines, is_killing_def, tree_ref_structure, output_ref):
	Remove.  Update all users.
	(dump_referenced_vars): Remove parameter 'details'.  Update all
	users.
	(dump_variable): Don't abort if the variable is nil.  Display all
	the aliases for the variable.
	(dump_dfa_stats): Handle new counters.
	(collect_dfa_stats): Likewise.
	(collect_dfa_stats_r): Likewise.
	(find_vars_r): New function.
	(compute_may_aliases): Call it via walk_tree before computing aliases.
	Only use alias tags if -ftree-points-to is not given.
	Call add_may_alias.
	(find_may_aliases_for): Only use alias tags if -ftree-points-to is
	not given.
	(add_may_alias): New function.
	(find_alias_tag): Rename from find_alias_leader.
	(dump_alias_info): New function.
	(debug_alias_info): New function.
	(htab_hash_var): New function.
	(htab_var_eq): New function.
	(get_virtual_var): New function.

	* tree-dump.c (struct dump_option_value_info): Rename -block to
	-blocks.  Add new option -vops.
	(dump_function): Don't display which pass enabled the dump.

	* tree-flow-inline.h: Update copyright notices.
	(var_ann): New function.
	(stmt_ann): New function.
	(ann_type): New function.
	(bb_ann): Rename from bb_annotation.
	(may_aliases): New function.
	(set_may_alias_global_mem): New function.
	(may_alias_global_mem_p): New function.
	(set_indirect_ref): New function.
	(indirect_ref): New function.
	(is_dereferenced): New function.
	(modify_stmt): New function.
	(unmodify_stmt): New function.
	(stmt_modified_p): New function.
	(def_op): New function.
	(use_ops): New function.
	(vdef_ops): New function.
	(vuse_ops): New function.
	(immediate_uses): New function.
	(reaching_defs): New function.
	(phi_nodes): New function.
	(same_var_p): New function.
	(gsi_step_in_bb): Re-implement.  Check if the iterator stepped out
	of the block by calling bb_for_stmt.
	(gsi_end_bb_p): Rename from gsi_end_bb.  Update all users.
	Call gsi_stmt to determine if the iterator has reached the end of
	the block.
	(ref_id, ref_type, ref_bb, ref_stmt, ref_var, imm_uses,
	reached_uses, imm_reaching_def, set_imm_reaching_def,
	set_phi_arg_def, phi_arg_def, set_phi_arg_edge, phi_arg_edge,
	reaching_defs, phi_args, num_phi_args, phi_arg, set_phi_arg,
	tree_annotation, tree_refs, add_tree_ref, remove_tree_ref,
	alias_leader, set_alias_leader, set_tree_flag, clear_tree_flag,
	reset_tree_flags, tree_flags, indirect_var, set_indirect_var,
	bb_refs, remove_bb_ref, set_exprref_class, exprref_class,
	set_exprref_inserted, exprref_inserted, set_exprref_save,
	exprref_save, set_exprref_reload, exprref_reload,
	set_exprref_processed, set_exprref_processed2, exprref_processed2i,
	exprref_uses, set_exprref_uses, set_expruse_def, expruse_def,
	set_expruse_phiop, expruse_phiop, set_expruse_phi, expruse_phi,
	set_expruse_has_real_use, expruse_has_real_use,
	set_exprphi_phi_args, exprphi_phi_args, num_ephi_args, ephi_arg,
	set_ephi_arg, set_exprphi_downsafe, exprphi_downsafe,
	set_exprphi_canbeavail, exprphi_canbeavail, set_exprphi_later,
	exprphi_later, set_exprphi_extraneous, exprphi_extraneous,
	exprphi_willbeavail, is_assignment_stmt, is_may_ref, is_may_def,
	is_may_use, is_partial_ref, is_partial_use, is_volatile_ref,
	is_volatile_def, is_volatile_use, is_clobbering_def,
	is_relocating_def, is_addressof_use, is_pure_use, is_pure_def,
	rli_after_end, rli_step, rli_step_rev, rli_ref, get_last_ref,
	get_first_ref, ref_list_is_empty): Remove.  Update all users.

	* tree-flow.h: Update copyright notices.
	Remove doxygen markers.
	Include hashtab.h.
	(enum tree_ann_type): New.
	(struct tree_ann_common_d): New.
	(struct var_ann_d): New.
	(struct operands_d): New.
	(struct voperands_d): New.
	(operands_t): New type.
	(voperands_t): New type.
	(struct dataflow_d): New.
	(dataflow_t): New type.
	(struct stmt_ann_d): New.
	(tree_ann): New type.
	(var_ann_t): New type.
	(stmt_ann_t): New type.
	(bb_ann_t): Rename from bb_ann.
	(enum tree_ref_type, TRM_*, struct ref_list_node, struct
	ref_list_priv, ref_list, struct tree_ref_common, struct var_ref_d,
	struct var_def_d, struct var_phi_d, struct var_use_d, struct
	phi_node_arg_d, phi_node_arg, struct expr_ref_common, struct
	expr_phi_d, struct expr_use_d, enum tree_ref_structure_enum, union
	tree_ref_d, tree_ref, struct tree_ann_d, tree_ann, enum tree_flags,
	struct dfa_counts_d, ref_list_iterator): Remove.  Update all users.
	(TDFA_USE_OPS): Define.
	(TDFA_USE_VOPS): Define.

	* tree-inline.c (walk_tree): Handle SSA_NAME nodes.

	* tree-optimize.c: Update copyright notices.
	Remove doxygen markers.
	(optimize_function_tree): Temporarily disable call to
	tree_perform_ssapre.
	Remove #if0 code.

	* tree-pretty-print.c (MASK_POINTER): Define.
	(dump_vops): New function.
	(dump_generic_node): Shorten made-up names for unnamed objects.
	Hanlde PHI_NODE, VDEF_EXPR and SSA_NAME nodes.
	Keep track of basic block transitions.
	Call dump_vops if -vops dump option is given.
	(op_prio): Don't abort if the operand is nil.
	(dump_block_info): Don't keep track of basic block transitions.

	* tree-simple.c: Update copyright notices.
	(get_base_symbol): Call STRIP_NOPS.
	Handle SSA_NAME nodes.

	* tree-simple.h: Update copyright notices.
	(gsi_end_p): Rename from gsi_end.  Update all callers.

	* tree-ssa-ccp.c: Update copyright notices.
	Update code to use the new SSA infrastructure.
	(const_values): New hash table to keep track of constants.
	(struct value_map_d): New.
	(cfg_edges): Rename from edges.  Update all users.
	(set_value): New function.
	(get_value): New function.
	(get_default_value): New function.
	(value_map_hash): New function.
	(value_map_eq): New function.

	* tree-ssa-dce.c: Update copyright notice.
	Update code to use new SSA infrastructure.  Factor some code into
	new functions.
	(dom_info): Declare with file scope.
	(struct stmt_stats): Add fields 'total_phis' and 'removed_phis'.
	(needed_stmts): New hash table to keep track of needed statements.
	(stmt_useful_p): New function.
	(find_useful_stmts): Call it.
	(remove_dead_stmt, remove_dead_phis): New functions.
	(remove_dead_stmts): Call them.
	(need_to_preserve_store): Preserve stores to volatile variables.
	(tree_ssa_dce): Rename from tree_ssa_eliminate_dead_code.  Update
	all users.

	* tree-ssa.c: Update copyright notice.
	Change basic algorithm to rewrite the function into SSA form
	instead of building factored use-def chains.
	Include hashtab.h and tree-dump.h
	(next_ssa_version): New global variable.
	(def_blocks): New file local variable.
	(struct def_blocks_d): New.
	(currdefs): New file local variable.
	(struct currdef_d): New.
	(rewrite_into_ssa): Rename from build_tree_ssa.  Update all users.
	Call compute_may_aliases, mark_def_sites and rewrite_block.
	(rewrite_block): Rename from search_fud_chains.  Call
	rewrite_stmts.
	(mark_def_sites): New function.
	(set_def_block): New function.
	(rewrite_stmts): New function.
	(rewrite_stmt): New function.
	(rewrite_operand): New function.
	(rewrite_out_of_ssa): New function.
	(remove_phi_node): New function.
	(register_new_def): New function.
	(def_blocks_free): New function.
	(def_blocks_hash): New function.
	(def_blocks_eq): New function.
	(currdef_hash): New function.
	(currdef_eq): New function.
	(debug_def_blocks): New function.
	(debug_def_blocks_r): New function.
	(build_fud_chains, compute_reaching_defs, follow_chain,
	dump_reaching_defs, debug_reaching_defs, set_ssa_links): Remove.
	(remove_phi_arg): Rename from tree_ssa_remove_phi_alternative.
	Update all users.
	(init_tree_ssa): Set next_ssa_version to 1.
	Create hash tables def_blocks and currdefs.
	(delete_tree_ssa): Accept a FUNCTION_DECL tree as argument.  Update
	all users.
	(currdef_for): Add new parameter 'create_default'.  If nonzero,
	create a new SSA name if none is found for the variable.
	(set_currdef_for): Search in the currdefs hash table.

	* tree.c (tree_node_kind): Add new values phi_kind and
	ssa_name_kind.
	(tree_node_kind_names): Likewise.
	(tree_size): Handle PHI_NODE and SSA_NAME nodes.
	(make_node): Likewise.
	(tree_node_structure): Likewise.
	(phi_node_elt_check_failed): New function.
	(make_phi_node): New function.
	(make_ssa_name): New function.
	(build_vdef_expr): New function.

	* tree.def (SSA_NAME): New code.
	(VDEF_EXPR): New code.
	(PHI_NODE): New code.

	* tree.h (union tree_ann_d): Forward declare.
	(struct tree_common): Change type of field 'ann'.
	(PHI_NODE_ELT_CHECK): Define.
	(phi_node_elt_check_failed): Declare.
	(VDEF_RESULT): Define.
	(VDEF_OP): Define.
	(SSA_NAME_DECL): Define.
	(SSA_NAME_DEF_STMT): Define.
	(SSA_NAME_VERSION): Define.
	(struct tree_ssa_name): New.
	(PHI_RESULT): Define.
	(PHI_NUM_ARGS): Define.
	(PHI_ARG_CAPACITY): Define.
	(PHI_ARG_ELT): Define.
	(PHI_ARG_EDGE): Define.
	(PHI_ARG_DEF): Define.
	(struct phi_arg_d): New.
	(struct tree_phi_node): New.
	(SSA_DECL_P): Define.
	(SSA_VAR_P): Define.
	(enum tree_node_structure_enum): Add values TS_SSA_NAME and
	TS_PHI_NODE.
	(union tree_node): Add fields 'ssa_name' and 'phi'.
	(make_phi_node): Declare.
	(make_ssa_name): Declare.
	(build_vdef_expr): Declare.
	(TDF_BLOCKS): Rename from TDF_BLOCK.
	(TDF_VOPS): Define.

	* doc/invoke.texi: Document new tree dump option -vops.  Update
	documentation for switch -blocks.

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

	* gimplify.c (simplify_return_expr): Correctly handle return
	expressions with side effects in functions returning void.

	* tree-ssa-ccp.c (widen_bitfield): Do not try to widen anything
	except constant integers.

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

	* c-simplify.c (simplify_decl_stmt): Fix comment typo.
	Use correct predicate when "simplifying" a static initializer.

2003-01-26  Andreas Jaeger  <aj@suse.de>

	* Makefile.in (gt-dependence.h): New rule.

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

	* c-simplify.c (simplify_decl_stmt): Arrange to examine initializers
	for static variables.
	* gimplify.c (simplify_constructor): Kill initial is_simple_constructor
	check.
	(simplify_modify_expr): Get the type from the destination rather than
	the toplevel expression.  Handle case where type is ARRAY_TYPE.  Ignore
	TREE_STATIC for the RHS.

2003-01-24  Frank Ch. Eigler  <fche@redhat.com>

	* tree-mudflap.c (mf_varname_tree): Check for non-NULL DECL_NAME
	before trying to cplus_demangle it.

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

	* tree-cfg.c (make_exit_edges): Fix thinkos.

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

	* tree-cfg.c (make_goto_expr_edges): Check the underlying
	LABEL_DECL, not the LABEL_EXPR for FORCED_LABEL and NONLOCAL_LABEL.

	* gimplify.c (simplify_expr, case GOTO_EXPR): Identify and mark
	labels which are targets of nonlocal gotos and mark functions which
	have labels which are targets of nonlocal gotos.
	(simplify_expr, case LABEL_DECL): New case.  Mark labels which
	have their address taken.
	* tree-cfg.c (is_nonlocal_label_block): Remove.  All callers
	updated.
	(make_exit_edges, case GOTO_EXPR): Handle computed gotos sanely.
	(make_exit_edges, case CALL_EXPR): Handle abnormal edges from
	nonlocal gotos at call sites.
	(make_exit_edges, case RETURN_EXPR): Likewise.
	(make_exit_edges, case MODIFY_EXPR): New case to handle abnormal
	edges from nonlocal gotos as call sites.
	(make_goto_expr_edges): Handle computed gotos and nonlocal gotos.
	(is_ctrl_altering_stmt): Handle abnormal edges in CALL_EXPRs
	functions which receive nonlocal gotos.  Similarly for CALL_EXPRs
	which occur on the RHS of a MODIFY_EXPR.
	* tree.h (FORCED_LABEL, NONLOCAL_LABEL): New defines.
	(FUNCTION_RECEIVES_NONLOCAL_GOTO): Likewise.

2003-01-22  Frank Ch. Eigler  <fche@redhat.com>

	* doc/invoke.texi: Provide some information about -fmudflap.

	* tree-mudflap.c (mf_varname_tree): Conditionally invoke the C++
	demangler in libiberty.  Reduce function printing verbosity.
	(mf_file_function_line_tree):  Reduce function printing verbosity.
	(mudflap_enqueue_decl): Use COMPLETE_TYPE_P to avoid trying to
	register (get size of) void-typed objects.

2003-01-21  Jose Renau  <renau@uiuc.edu>

	* tree-flow-inline.h (get_lineno): Return -1 for nodes without
	locus information.
	(get_filename): Return "???" for nodes without locus information.

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

	* tree-cfg.c (cleanup_switch_expr_graph): Wrap declaration of
	switch_expr with ENABLE_CHECKING block.

	* c-simplify.c (is_last_stmt_of_scope): Wrap definition and
	declaration inside and ENABLE_CHECKING block.

2003-01-20  Frank Ch. Eigler  <fche@redhat.com>

	* tree-mudflap.c (mx_xfn_indirect_ref): Use new TREE_LOCUS field
	as a predicate for finding TREE_FILENAME etc.

2003-01-16  Daniel Berlin  <dan@dberlin.org>

	* Remove dead PRE code.
	* tree-ssa-pre.c (tree_perform_ssapre): Collect left occurrences and
	kills *after* finishing collecting all expressions.

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

	* Death to WFL nodes.
	* c-aux-info.c: Replace DECL_SOURCE_FILE and DECL_SOURCE_LINE with
	TREE_FILENAME and TREE_LINENO respectively when retrieving file
	and line information.  Use TREE_LOCUS to copy existing information
	from one node to another.  Use annotate_with_file_line to add or
	replace location information on a node.  Remove support for
	EXPR_WITH_FILE_LOCATION nodes.  Remove STRIP_WFL statements.
	* c-common.c, c-parse.in, c-pretty-print.c, dbxout.c: Likewise.
	* diagnostic.c, dwarf2out.c, dwarfout.c: Likewise.
	* except.c, integrate.c, stmt.c, tree-alias-common.c: Likewise.
	* tree-cfg.c, tree-dfa.c, tree-dump.c, tree-flow-inline.h: Likewise.
	* tree-mudflap.c, tree-pretty-print.c, tree-simple.c: Likewise.
	* tree-ssa-ccp.c, tree-ssa-dce.c, tree-ssa-pre.c: Likewise.
	* varasm.c, xcoffout.c: Likewise.
	* config/alpha/alpha.c: Likewise.
	* config/mips/mips.c: Likewise.
	* c-decl.c: Likewise.
	(duplicate_decls): Also copy TREE_LOCUS from olddecl to newdecl.
	(finish_function): Save and restore the current filename and
	linenumber around genericizing of the function tree.
	* c-simplify.c (c_simplify_stmt): Use annotate_all_with_file_line
	instead of wrap_all_with_wfl.  Remove STRIP_WFL statements.
	* expr.c (expand_expr): Emit line number notes for expressions
	with attached file/line information.  Remove EXPR_WITH_FILE_LOCATION
	support.
	* gimplify.c: Kill STRIP_WFL statements.  Remove EXPR_WITH_FILE_LOCATION
	support.
	(simplify_expr_wfl): Kill.
	(annotate_stmt_with_file_line): Renamed from wrap_with_wfl.
	(annotate_all_with_file_line): Renamed from wrap_all_with_wfl.
	(simplify_expr): Save and restore the current file/line around
	simplification of the given expression.  Add annotation to more
	nodes created during simplification.
	(simplify_self_mod_expr): Add file/line location to nodes we create.
	(get_initialized_tmp_var): Similarly.
	* old-tree-inline.c (expand_call_inline): Use annotate_with_file_line
	to add file/line information to nodes instead of wrapping them
	with EXPR_WITH_FILE_LOCATION nodes.
	* print-tree.c: Use TREE_FILENAME and TREE_LINENO instead of
	DECL_SOURCE_FILE and DECL_SOURCE_LINE respectively.  Remove
	support for EXPR_WITH_FILE_LOCATION nodes.
	(print_node): Dump any file/line information that is attached to
	the given node.
	* tree-inline.c (walk_tree): Set lineno appropriately.
	* tree-simple.h (annotate_all_with_file_line): Renamed from
	wrap_all_with_wfl.  Remove STRIP_WFL statements.
	* tree.c (build_expr_wfl): Kill.
	(make_node): Use annotate_with_file_line.
	(annotate_with_file_line): New function.
	* tree.def: Remove EXPR_WITH_FILE_LOCATION.
	* tree.h (tree_common): Add locus field.  Remove references to
	EXPR_WITH_FILE_LOCATION.
	(tree_decl): Remove locus field.
	(STRIP_WFL, EXPR_WFL_*): Kill.
	(DECL_SOURCE_LOCATION, DECL_SOURCE_FILE, DECL_SOURCE_LINE): Kill.
	(TREE_LOCUS, TREE_FILENAME, TREE_LINENO): new.
	(annotate_with_file_line): Renamed from build_expr_wfl.

	* objc/objc-act.c: Use TREE_FILENAME and TREE_LINENO to
	extract file/line information from tree nodes.

2003-01-14  Frank Ch. Eigler  <fche@redhat.com>

	* tree-mudflap.c (mx_xfn_indirect_ref): Handle ARRAY_REF of
	a COMPONENT_REF specially to avoid unnecessary checks.

2003-01-13  Frank Ch. Eigler  <fche@redhat.com>

	Front-end generalization.
	* Makefile.in (C_AND_OBJC_OBJS): Add c-mudflap.o and dependencies.
	* tree-mudflap.c: Don't include "c-tree.h" any more.
	(mf_init_extern_trees): Divert to mflang_lookup_decl().
	(mf_enqueue_register_call, mf_flush_enqueued_calls): Move and rename
	these functions.
	* tree-mudflap.h: Declare new mflang_* routines.
	* c-mudflap.c: New file with C front-end mflang_* routines.
	* tree-nomudflap.c (*): Call internal_error instead of abort.

2003-01-07  Steven Bosscher  <s.bosscher@student.tudelft.nl>

	* Makefile.in (check-g95): New test target.
	(check-f95): Alias for check-g95.

2003-01-07  Diego Novillo  <dnovillo@redhat.com>

	* tree-dump.c (dump_function_to_file): New function.
	(dump_function): Call it.
	Convert argument declaration to K&R format.
	* tree-dump.h: Include splay-tree.h.
	(dump_function_to_file): Declare.

	* tree-optimize.c (optimize_function_tree): Remove unused variables
	dump_file and dump_flags.
	(dump_current_function): Remove.  Update all users by calling
	dump_function instead.
	* tree.h (dump_current_function): Remove declaration.

	* Makefile.in (TREE_DUMP_H): Define.
	Update targets depending on tree-dump.h to depend on $(TREE_DUMP_H).
	(tree-ssa-cp.o): Remove unused target.
	(tree-cfg.o): Add dependency on $(TREE_DUMP_H).
	(tree-optimize.o): Likewise.
	(tree-ssa-dce.o): Likewise.
	(tree-ssa-ccp.o): Likewise.
	(tree-ssa-pre.o): Likewise.

2003-01-02  Daniel Berlin  <dberlin@dberlin.org>

	* tree-ssa-pre.c (rename_2): Fix a false matching condition.
	This is actually fallout from is_default_def change.

2003-01-02  Jason Merrill  <jason@redhat.com>

	* c-simplify.c (c_genericize): Dump more info about the function.
	Use dump_function.
	* tree-dump.c (dump_function): Move from cp/optimize.c.
	* tree-dump.h: Declare it.

	* gimplify.c (mostly_copy_tree_r): Remove unnecessary cases.
	(unshare_expr): New fn.
	* tree-inline.c (mark_local_for_remap_r, unsave_r): New fns, adapted
	from C++ versions.
	(lhd_unsave_expr_now): Likewise.
	* tree.c (unsave_expr_now): Remove.
	(unsafe_for_reeval): Labels and BIND_EXPRs are only somewhat unsafe.

	* gimplify.c (simplify_function_tree): Add an outer BIND_EXPR if
	needed.
	(voidify_wrapper_expr): Not static.  Abort if we try to voidify an
	expression with TREE_ADDRESSABLE type.  Be clever with INDIRECT_REFs.
	(foreach_stmt): Avoid redundant work.
	(create_tmp_var): Abort if we try to create a temp of ADDRESSABLE type.
	(simplify_expr): Simplify VTABLE_REF.
	* c-simplify.c (simplify_decl_stmt): Ignore DECL_EXTERNAL decls.
	(simplify_stmt_expr): Fix thinko.
	(simplify_block): Don't ignore partial scopes.
	(simplify_condition): New fn.
	(simplify_c_loop, simplify_if_stmt, simplify_switch_stmt): Call it.
	* expr.c (expand_expr) [BIND_EXPR]: Handle statics better.
	* tree-inline.c (remap_decl): Remap all decls.
	(declare_return_variable): Be clever with INDIRECT_REFs.
	(expand_call_inline): If we have an explicit return slot, the inlined
	body is void.
	(walk_tree): Fix type handling.
	(copy_tree_r): Don't walk into decls.
	* tree-simple.c (is_simple_unary_expr): Handle VTABLE_REF.
	(is_simple_id): Allow RESULT_DECL.
	* tree-simple.h (gsi_stmt): Strip WFLs and NOPs.

	* gimplify.c (simplify_cond_expr): Handle void arms.  Add target parm.
	(simplify_modify_expr): Pass it.  Add special handling for COND_EXPR
	and CONSTRUCTOR (from Daniel Berlin).  Add want_value parm.
	(simplify_expr): Pass new args. Loop sooner if language-specific
	simplification happened.
	(simplify_return_expr): Pass the whole MODIFY_EXPR to simplify_expr.
	(simplify_target_expr): Simplify.

	* tree.def (CATCH_EXPR, EH_FILTER_EXPR): New tree codes.
	* except.c (expand_eh_handler): New fn.
	(expand_eh_region_end_allowed): If no types are allowed, hand off to
	expand_eh_region_end_must_not_throw.
	* except.h: Declare expand_eh_handler.
	* expr.c (expand_expr) [TRY_CATCH_EXPR]: Use it.
	[CATCH_EXPR, EH_FILTER_EXPR]: New cases.
	* gimplify.c (simplify_expr) [EXC_PTR_EXPR, CATCH_EXPR,
	EH_FILTER_EXPR]: New cases.
	(gimple_build_eh_filter): New fn.
	(maybe_protect_cleanup): New fn.
	(gimple_push_cleanup): Call it.
	(simplify_cleanup_point_expr): Fix thinko.
	* c-simplify.c (simplify_cleanup): Call it.
	* tree-simple.h: Declare it.
	* Makefile.in (gimplify.o): Depend on except.h.
	* tree.h (CATCH_TYPES, CATCH_BODY): New macros.
	(EH_FILTER_TYPES, EH_FILTER_FAILURE): New macros.
	* tree-simple.c (is_simple_id): Allow EXC_PTR_EXPR.
	* c-pretty-print.c (dump_c_node) [CLEANUP_POINT_EXPR]: Support.
	* tree-pretty-print.c (dump_generic_node): Likewise.
	[CATCH_EXPR, EH_FILTER_EXPR, EXC_PTR_EXPR]: Support.

	* c-pretty-print.c (NIY): Print operands.
	(dump_c_tree): Don't look at TREE_CHAIN if it doesn't matter.
	(dump_c_node) [ARRAY_TYPE]: Handle non-constant array bounds.
	[CALL_EXPR]: Pass spc down.
	[VTABLE_REF]: Support.
	(op_prio) [TARGET_EXPR]: Support.
	(print_call_name): Handle function pointers.
	* tree-pretty-print.c: Likewise.

2002-12-31  Steven Bosscher  <s.bosscher@student.tudelft.nl>

	* gimplify.c (create_tmp_var_noc): Remove unused function.
	* tree-simple.h: Kill prototype.

2002-12-30  Diego Novillo  <dnovillo@redhat.com>

	* tree-flow.h (tree_find_loops): Remove unused declaration.

2002-12-29  Daniel Berlin  <dberlin@dberlin.org>

	* toplev.c: Add flag_ip, enable by default at -O4+ (This is not
	set in stone, and thus, not documented).
	(decode_f_option): Add warning if andersen's PTA is selected but
	not compiled in.

	* flags.h: Add flag_ip.

	* tree-alias-ander.c: Fix todo.
	(andersen_function_call): Return 1 if we don't need to process
	the function.
	(ptset_map): New map, cache points-to sets.
	(andersen_op): We can do IP on all statics without help.
	(andersen_init): Only init once if we are doing ip analysis.
	(andersen_cleanup): Don't cleanup if we need the info for ip.
	(andersen_add_var): Clear points-to set if it exists already.
	(andersen_add_var_same): Ditto.
	(andersen_function_call): We can do interprocedural analysis on
	statics.
	(andersen_may_alias): Cache points-to sets.

	* c-decl.c (c_expand_body): Don't throw away tree if flag_ip is
	on, even if they are uninlinable, they may be wanted for ip
	optimizations.

	* tree-alias-common.c (get_values_from_constructor): New
	function to collect alias_typevars from constructors.
	(alias_annot): Fix where the GTY is so gengtype picks it up.
	(intra_function_call): Ignore non-pointers for global var
	assignment. What arguments point to can now point to a global var
	as well.
	(find_func_aliases): We need to handle decl's with initials as
	well.
	Only call intra_function_call if we have to.
	Handle constructors.
	(create_fun_alias_var): Incoming pointer arguments could be
	pointing to a global var, unless this is a static function and we
	are doing interprocedural analysis.
	(create_alias_vars): Take an fndecl argument, and use it.
	(init_alias_vars): Handle ip_partial as well.
	(ptr_may_alias_var): Simplify, fix.

	* tree-alias-common.h (tree_alias_ops): function_call now returns
	an int, and we have an extra member named ip_partial.

	* tree-alias-steen.c (steen_ops): We can't do ip_partial.
	(steen_function_call): Update definition and return 1.

	* tree-dfa.c (compute_may_aliases): Call create_alias_vars with
	current_function_decl.

	* tree-flow.h (create_alias_vars): Remove proto from here, it's
	in tree-alias-common.h.
	(tree_perform_ssapre): Take a tree, like the other optimizers.

	* tree-optimize.c (optimize_function_tree): Call
	tree_perform_ssapre with a tree.

	* tree-ssa-pre.c: Remove dead, #if 0'd code.
	(tree_perform_ssapre): Use passed in tree.

2002-12-23  Frank Ch. Eigler  <fche@redhat.com>

	* tree-mudflap.c (mf_decl_cache_locals, mf_decl_clear_locals): New
	functions.
	(mudflap_c_function): Call them before/after basic transforms.
	(mf_cache_shift_decl_l, ..._mask_l): New variables to track local
	VAR_DECL shadows of cache parameters.
	(mf_build_check_statement_for): Use and update them.

2002-12-23  Frank Ch. Eigler  <fche@redhat.com>

	* tree-mudflap.c (mx_register_decls): Trust incoming TREE_ADDRESSABLE
	instead of own timetaking analysis.
	(mf_find_addrof, mx_xfn_find_addrof): Removed functions.

2002-12-23  Steven Bosscher <s.bosscher@student.tudelft.nl>

	* tree-dfa.c: Add doxygen markers in comments.

2002-12-22  Diego Novillo  <dnovillo@redhat.com>

	* gimplify.c: Undo the following change:
	    2002-12-11  Diego Novillo  <dnovillo@redhat.com>
		* gimplify.c (simplify_return_expr): return statements should
		  only have a GIMPLE value as argument.

	* tree-simple.c: Fix grammar for return statements.

2002-12-20  Frank Ch. Eigler  <fche@redhat.com>

	* tree-mudflap.c (mf_init_extern_trees): Rewrite last change
	without using statement-expressions.

2002-12-19  Diego Novillo  <dnovillo@redhat.com>

	* tree-cfg.c (build_tree_cfg): Make sure that TV_TREE_CFG
	is popped properly.

2002-12-19  Frank Ch. Eigler  <fche@redhat.com>

	* tree-mudflap.c (mf_init_extern_trees): Abort gracefully if
	<mf-runtime.h> was not included.
	(*): Correct some minor compiler warnings elsewhere.

2002-12-18  Diego Novillo  <dnovillo@redhat.com>

	* configure: Regenerate with autoconf 2.13.

2002-12-17  Ben Elliston  <bje@redhat.com>

	* tree-optimize.c (optimize_function_tree): Temporarily
	disable SSA optimizations if -fmudflap is present.

2002-12-16  Ben Elliston  <bje@redhat.com>

	* tree-mudflap.c (mx_flag): Assert that the tree node is valid.

2002-12-14  Jason Merrill  <jason@redhat.com>

	* tree-dump.c (dump_files): Add .generic.  Move .inlined after it.
	* tree.h (tree_dump_index): Likewise.
	* c-simplify.c (c_genericize): Emit original and generic dumps here.
	* c-decl.c (c_expand_body): Not here.

2002-12-13  Ben Elliston  <bje@redhat.com>

	* tree-dfa.c (find_refs_in_expr): Terminate comment.

2002-12-12  Steven Bosscher <s.bosscher@student.tudelft.nl>

	* tree-cfg.c: Update doxygen documentation.
	* tree-dfa.c: Add doxygen documentation.

2002-12-11  Steven Bosscher <s.bosscher@student.tudelft.nl>

	* tree-cfg.c: Add doxygen markers in comments.
	* tree-optimize.c: Likewise.
	* tree-ssa.c: Likewise.

2002-12-11  Diego Novillo  <dnovillo@redhat.com>

	* gimplify.c (simplify_return_expr): return statements should only
	have a GIMPLE value as argument.
	* tree-cfg.c (call_expr_flags): New function.
	(is_ctrl_altering_stmt): Call it.
	* tree-flow.h (extern): Declare it.

2002-12-06  Diego Novillo  <dnovillo@redhat.com>

	* tree-cfg.c (make_goto_expr_edges): Temporary hack to prevent
	removing blocks with nonlocal labels.
	(is_nonlocal_label_block): Return true if DECL_NONLOCAL is set for
	the label.

	* tree-dfa.c (alias_leaders): New local array.
	(num_alias_leaders): New local variable.
	(find_alias_leader): New local function.
	(may_access_global_mem): New local function.
	(find_may_aliases_for): Call them.
	(compute_may_aliases): Allocate and deallocate alias_leaders.
	Show alias information if -fdump-tree-...-alias flag is given.
	(may_alias_p): Return true if both variables are the same.
	(find_refs_in_expr): Strip WFL and NOPs from the parent statement.
	If a pointer relocation is due to a function call, assignment from
	a global or a function argument, mark the pointer as a may-alias
	for global storage.
	(dump_referenced_vars): Reformat output.
	(dump_variable): Likewise.

	* tree-dump.c (dump_option_value_info): Add entry for TDF_ALIAS.
	* tree.h (TDF_ALIAS): Define.
	* doc/invoke.texi: Document new flag.

	* tree-flow-inline.h (may_alias_global_mem_p): New function.
	* tree-flow.h (enum tree_flags): Add value TF_MAY_ALIAS_GLOBAL_MEM.
	(may_alias_global_mem_p): Declare.

	* tree-simple.c (get_base_symbol): Return NULL_TREE, not NULL.
	* tree-ssa-ccp.c (tree_ssa_ccp): Remove unused variable.
	* tree-ssa-dce.c (need_to_preserve_store): Call
	decl_function_context instead of DECL_CONTEXT.
	If the symbol may alias global memory, return nonzero.

	* tree-ssa.c (dump_reaching_defs): Reformat output.
	(set_currdef_for): Walk the alias leader chain, setting CURRDEF for
	all the alias sets that may be affected by the definition.

2002-12-06  Daniel Berlin  <dberlin@dberlin.org>

	* tree-dfa.c (may_alias_p): Fix global variables and points-to.

2002-12-03  Daniel Berlin  <dberlin@dberlin.org>

	* tree-ssa.c (delete_tree_ssa):  Move call to delete_alias_vars
	above resetting num_referenced_vars.

2002-12-03  Diego Novillo  <dnovillo@redhat.com>

	* Makefile.in: Add dependencies on $(TM_H) and coretypes.h for the
	files mentioned below.
	* old-tree-inline.c: Include tm.h and coretypes.h.
	* c-pretty-print.c: Likewise.
	* disjoint-set.c: Likewise.
	* tree-alias-ecr.c: Likewise.
	* tree-alias-type.c: Likewise.
	* tree-alias-ander.c: Likewise.
	* tree-alias-steen.c: Likewise.
	* tree-alias-common.c: Likewise.
	* tree-ssa.c: Likewise.
	* tree-ssa-pre.c: Likewise.
	* tree-cfg.c: Likewise.
	* tree-dfa.c: Likewise.
	* tree-optimize.c: Likewise.
	* c-simplify.c: Likewise.
	* gimplify.c: Likewise.
	* tree-browser.c: Likewise.
	* simple-break-elim.c: Likewise.
	* simple-goto-elim.c: Likewise.
	* tree-dchain.c: Likewise.
	* c-call-graph.c: Likewise.
	* tree-simple.c: Likewise.
	* tree-nomudflap.c: Likewise.
	* tree-pretty-print.c: Likewise.
	* tree-ssa-dce.c: Likewise.
	* tree-ssa-ccp.c: Likewise.
	* dependence.c: Likewise.
	* tree-mudflap.c: Likewise
	(mx_xfn_indirect_ref): Use size_type_node instead of c_size_type_node.

2002-12-03  Diego Novillo  <dnovillo@redhat.com>

	* tree-dfa.c: Undo this change that causes bootstrap
	failures:

	2002-12-02  Diego Novillo  <dnovillo@redhat.com>

		* tree-dfa.c (may_alias_p): Artificial variables
		can also be aliased.

2002-12-03  Andreas Jaeger  <aj@suse.de>

	* tree-simple.c (right_assocify_expr): Remove unused variable.

2002-12-02  Andrew MacLeod  <amacleod@redhat.com>

	* gimplify.c (simplify_cleanup_point_expr): gsi_stmt can return NULL,
	use gsi_end.
	* tree-cfg.c (make_blocks): Use gsi_end, gsi_stmt can return NULL. Set
	basic_block for empty_stmt_node containers.
	(make_edges): Stmt's can be NULL.
	(make_ctrl_stmt_edges, make_exit_edges, make_loop_expr_edges,
	make_cond_expr_edges, make_goto_expr_edges, is_nonlocal_label_block,
	block_invalidates_loop, cleanup_control_flow, cleanup_cond_expr_graph,
	cleanup_switch_expr_graph, disconnect_unreachable_case_labels,
	find_taken_edge, tree_cfg2dot, successor_block, is_latch_block,
	switch_parent, first_stmt, last_stmt): Check for first_stmt() or
	last_stmt() returning NULL.
	(remove_tree_bb, first_exec_stmt): Use gsi_end.
	(last_stmt_ptr): Iterate to find last execuatbel stmt_ptr in a block.
	(gsi_start_bb): Return first non-empty stmt, if there is one.
	(set_bb_for_stmt): Don't decend into an empty_stmt_node.
	* tree-dfa.c (find_tree_refs): Use gsi_end.
	(collect_dfa_stats): Use gsi_end_bb.
	* tree-flow-inline.h (gsi_step_bb): split.
	(gsi_step_in_bb): gsi_step with explicit bb specified. Never return
	empty_stmt_node.
	(gsi_start_bb): Move to tree-cfg.c.
	(gsi_end_bb): New. Have we reached the end of a basic block.
	* tree-flow.h (gsi_start_bb): Make external.
	(gsi_end_bb, gsi_step_in_bb): New prototypes.
	* tree-simple.h (gsi_end): renamed from gsi_after_end.
	(gsi_stmt): Return NULL if stmt is an empty_stmt_node or error mark.
	* tree-ssa-ccp.c (simulate_block, substitute_and_fold): Use gsi_end.
	* tree-ssa-dce.c (mark_control_parent_necessary, find_useful_stmts,
	remove_dead_stmts): Use gsi_end_bb.
	(process_worklist): Check for NULL last_stmt.
	* tree-ssa-pre.c (finalize_1): Use gsi_end_bb, gsi_stmt can be NULL.

2002-12-02  Diego Novillo  <dnovillo@redhat.com>

	* tree-dfa.c (dump_ref): Display '<nil>' for NULL references.
	(dump_phi_args): Handle NULL arguments.
	(may_alias_p): Artificial variables can also be aliased.

2002-12-02  Daniel Berlin <dberlin@dberlin.org>

	* tree-ssa-pre.c (okay_injuring_def): inj could be null.
	(get_operand):  Use instead of special casing INDIRECT_REF and
	COMPONENT_REF everywhere.
	(names_match_p): Fix.
	(defs_match_p): Ignore partial uses.
	(rename_2): Fix non-matching condition.
	(update_old_new): Update the kills and lefts arrays.
	(finalize_1): Set the bb for the new statement.
	(update_ssa_for_new_use): Ditto.
	(code_motion): Ditto.
	(call_modifies_slot): Handle function pointers (where we end up
	with a _DECL as our argument).
	(pre_part_1_trav): Update the kills and lefts arrays.
	Just use TREE_TYPE (ei->expr) for type of expression.
	(add_left_occ): New helper function.
	(process_left_occs_and_kills): Add other cases we need to handle.
	(tree_perform_ssapre): Add new processed array, since for left
	occurrences and kills, we need to process *all* statements, not
	just ones we might consider candiates for PRE.

2002-12-02  Diego Novillo  <dnovillo@redhat.com>

	* tree-dfa.c (find_refs_in_expr): Look for references in
	VA_ARG_EXPR nodes.

2002-12-01  Diego Novillo  <dnovillo@redhat.com>

	* tree-optimize.c (optimize_function_tree): Undo
	inadvertent change in previous commit.

2002-12-01  Diego Novillo  <dnovillo@redhat.com>

	* fold-const.c (operand_equal_p): Check for NULL TREE_TYPEs.

	* tree-cfg.c (remove_stmt): Call remove_ref.
	(disconnect_unreachable_case_labels): Do not disconnect the edge
	going to the block holding the BIND_EXPR node for the switch()
	body.
	(dump_tree_cfg): Call dump_current_function.

	* Makefile.in (tree-dfa.o): Depend on convert.h.
	* tree-dfa.c: Include convert.h.
	(remove_def): New local function.
	(reset_def_def_links): New local function.
	(replace_phi_arg_with): New local function.
	(replace_ref_with): New function.
	(try_replace_ref_with): Rename from replace_ref_in.
	Also look for V_USE references on the LHS of assignments.
	When replacing the callee of a CALL_EXPR, make sure that the type
	of the new callee is compatible with the old one.
	(replace_ref_r): Call operand_equal_p.
	(remove_ref): New function.
	(same_var_p): New function.
	(dump_referenced_vars): Add new flag DETAILS.  Update all users.
	(debug_referenced_vars): Likewise.

	* tree-ssa.c (dump_reaching_defs): Change output format.
	(set_ssa_links): Don't set def-def links for PHI nodes.

	* tree-ssa-ccp.c (replace_uses_in): Add new argument COMMIT.
	Update all users.

	* tree-optimize.c (dump_current_function): New function.
	(optimize_function_tree): Call it.
	* tree.h (dump_current_function): Declare.
	* c-decl.c (c_expand_body): Call dump_current_function.
	* tree-ssa-dce.c (tree_ssa_eliminate_dead_code): Likewise.
	* tree-ssa-pre.c (tree_perform_ssapre): Likewise.
	* tree-ssa.c (build_tree_ssa): Likewise.
	* tree-ssa-ccp.c (tree_ssa_ccp): Likewise.
	Dump variables and reaching definitions if TDF_DETAILS is set.

	* tree-pretty-print.c (print_call_name): Call dump_generic_node for
	NOP_EXPR operands.

	* tree-ssa-pre.c: Don't include c-common.h nor c-tree.h
	Replace calls to build_modify_expr with build everywhere.
	Replace calls to deep_copy_node with copy_node_r everywhere.

2002-11-29  Andreas Jaeger  <aj@suse.de>

	* c-call-graph.c (construct_call_graph): Fix format.

	* tree-alias-ander.c: Declare print_out_result.

	* tree-ssa-pre.c: Declare is_on_lhs and call_modifies_slot.

	* tree.h: Declare expand_asm_expr and add_var_to_bind_expr.

	* tree-inline.c: Declare remap_decls.

2002-11-28  Daniel Berlin  <dberlin@dberlin.org>

	* tree-alias-common.h: Start adding doxygen docs.

	* tree-alias-common.c: Ditto

2002-11-28  Daniel Berlin  <dberlin@dberlin.org>

	* tree-alias-ander.c: Convert debug defines and ifdefs into
	dump_file use.

	* tree.h: Add TDI_pta.

	* tree-dump.c: Add dump-tree-pta and TDI_pta.

2002-11-28  Diego Novillo  <dnovillo@redhat.com>

	* Makefile.in (tree-ssa-pre.o, tree-cfg.o, gimplify.o, tree-ssa-dce.o,
	tree-ssa-ccp.o): Add dependency on $(TIMEVAR_H).
	* timevar.def (TV_TREE_GIMPLIFY, TV_TREE_MAY_ALIAS,
	TV_TREE_INSERT_PHI_NODES, TV_TREE_BUILD_FUD_CHAINS, TV_TREE_RDEFS):
	New timers.
	(TV_TREE_SSA): Remove.
	(TV_INTEGRATION, TV_EXPAND): Switch order.
	* c-decl.c (c_expand_body): Pop TV_EXPAND before running the tree
	optimizers.
	* gimplify.c (simplify_function_tree): Push/pop TV_TREE_GIMPLIFY.
	* tree-cfg.c (build_tree_cfg): Push/pop TV_TREE_CFG.
	* tree-dfa.c (compute_may_aliases): Push/pop TV_TREE_MAY_ALIAS.
	* tree-ssa-ccp.c (tree_ssa_ccp): Push/pop TV_TREE_CCP.
	* tree-ssa-dce.c (tree_ssa_eliminate_dead_code): Push/pop
	TV_TREE_DCE.
	Call compute_reaching_defs.
	Remove debugging dumps before DCE.
	* tree-ssa-pre.c (tree_perform_ssapre): Push/pop TV_TREE_PRE.
	* tree-ssa.c (build_tree_ssa): Don't call compute_reaching_defs.
	Don't call dump_reaching_defs.
	(insert_phi_nodes): Push/pop TV_TREE_INSERT_PHI_NODES.
	(build_fud_chains): Push/pop TV_TREE_BUILD_FUD_CHAINS.
	(compute_reaching_defs): Push/pop TV_TREE_RDEFS.
	Call dump_reaching_defs.
	* tree-optimize.c (optimize_function_tree): Remove calls to
	timevar_push and timevar_pop.

2002-11-28  Diego Novillo  <dnovillo@redhat.com>

	* Makefile.in (tree-ssa.o): Add dependency on $(TIMEVAR_H) and
	tree-alias-common.h.
	(tree-dfa.o): Likewise.
	(tree-optimize.o): Add dependency on $(TIMEVAR_H).
	* tree-dfa.c (compute_may_aliases): Move call to delete_alias_vars
	* tree-ssa.c (delete_tree_ssa): ... here.

2002-11-27  Diego Novillo  <dnovillo@redhat.com>

	* tree-dfa.c (add_may_alias): Remove.  Update all users.
	(get_alias_index): Remove.  Update all users.
	(dfa_stats_d): Remove fields num_may_alias, max_num_may_alias,
	num_alias_imm_rdefs and max_num_alias_imm_rdefs.  Update all users.
	(may_alias_p): Make extern.  Move declaration to tree-flow.h.
	(TRM_DEFAULT): Remove.  Update all users.  Update values of the
	other TRM_* constants.
	(create_ref): Don't initialize the PHI argument array with the
	number of incoming edges.
	(collect_dfa_stats): Do not traverse the function body with
	walk_tree.
	Free temporary hash table before returning.
	(compute_may_aliases): Update comment.
	(may_alias_p): Switch arguments if the first argument is not an
	INDIRECT_PTR or the artificial global_var.
	(find_may_aliases_for): If a pointer aliases a variable, set the
	pointer to be the alias leader for the variable.
	(ref_defines): Call may_alias_p.
	(is_killing_def): Return false if the reaching definition is NULL.
	Don't check for volatile definitions.
	Change second argument to be a tree.  Update all users.

	* tree-flow-inline.h (alias_imm_reaching_def): Remove.  Update all
	users.
	(may_alias): Remove.  Update all users.
	(set_imm_reaching_def): Check for circularity.
	(alias_leader): New function.
	(set_alias_leader): New function.
	(is_aliased): New function.
	(is_default_def): Remove.  Update all users.

	* tree-flow.h (struct var_ref_d): Remove field alias_imm_rdefs.
	Update all users.
	(struct var_def_d): Remove field m_default.  Update all users.
	(struct tree_ann_d): Remove field may_aliases.  Update all users.
	Add field alias_leader.
	(struct dfa_counts_d): Remove fields num_may_alias and
	num_may_alias_imm_rdefs.  Update all users.

	* tree-ssa.c: Update documentation on may-alias processing.
	(set_ssa_links): Remove third argument.  Update all users.
	(set_alias_imm_reaching_def): Remove.  Update all users.
	(create_default_def): Likewise.
	(analyze_rdefs): Likewise.
	(currdef_for): Move from tree-flow-inline.h
	(set_currdef_for): Likewise.
	(compute_reaching_defs): Rename from compute_tree_rdefs.  Update
	all users.
	(follow_chain): Call is_killing_def instead of is_partial_def.
	(tree_ssa_remove_phi_alternative): Remove unused variable ref.
	(set_ssa_links): When processing V_USE references, make sure that
	CURRDEF is a definition for the variable or one of its aliases.

2002-11-26  Sebastian Pop  <s.pop@laposte.net>

	* Makefile.in (OBJS): Add tree-browser.o.
	(tree-browser.o): New dependency.
	* tree-browser.c: New file.
	* tree-browser.def: New file.

2002-11-26  Jason Merrill  <jason@redhat.com>

	Gimplify C++ cleanups.
	* gimplify.c (voidify_wrapper_expr): Split out from...
	(simplify_bind_expr): ...here.
	(simplify_cleanup_point_expr): New fn.
	(simplify_target_expr): New fn.
	(gimple_conditional_context): New fn.
	(gimple_push_condition, gimple_pop_condition): New fns.
	(simplify_expr) [TRY_CATCH_EXPR]: Handle like TRY_FINALLY_EXPR.
	* c-simplify.c (simplify_cleanup): New fn.
	(c_simplify_stmt): Call it and lang_simplify_stmt.
	(simplify_expr_stmt): Wrap the expr in a CLEANUP_POINT_EXPR.
	(simplify_return_stmt, simplify_decl_stmt): Likewise.
	(simplify_stmt_expr): Handle the STMT_EXPR_NO_SCOPE case.
	(is_last_stmt_of_scope): Likewise.
	* c-common.h: Declare c_genericize, c_simplify_stmt and
	lang_simplify_stmt.
	* c-common.c (lang_simplify_stmt): Define.

	Gimplify EXIT_EXPRs.
	* gimplify.c (gimplify_loop_expr, gimplify_exit_expr): New fns.
	(simplify_expr): Call them.
	* expr.c (expand_expr) [LOOP_EXPR]: Pass 1 again for exit_flag.

	* tree-simple.c (right_assocify_expr): Also set TREE_SIDE_EFFECTS.

	* gimplify.c (simplify_expr): Call STRIP_TYPE_NOPS.
	[REALPART_EXPR]: Don't just return.

	* tree-pretty-print.c (dump_c_node): Handle REFERENCE_TYPE.
	* c-pretty-print.c (dump_c_node): Likewise.  Handle null FOR_INIT_STMT.

2002-11-25  Daniel Berlin <dberlin@dberlin.org>

	* config.gcc: Try committing the correct version.
	* tree-alias-ander.c (andersen_may_alias): Add "!= NULL" to make
	return a bool.

2002-11-24  Daniel Berlin  <dberlin@dberlin.org>

	* configure.in: Add --with-libbanshee, passed to us by toplevel if
	libbanshee was configured. Substitute appropriate definitions for
	Makefile (IE disabling tree-alias-ander building) if it wasn't.
	* config.in: Regenerated.
	* config.gcc: Rebuild libbanshee with stage1 on darwin to work
	around system compiler problem.
	* configure: Regenerated.
	* Makefile.in: Add banshee stuff.
	* tree-alias-ander.c: New file.
	* tree-alias-ander.h: New file.
	* tree-alias-common.c (get_alias_var): Fix field based stuff.
	(find_func_aliases): Don't walk subtrees if we processed the tree.
	(ptr_may_alias_var): Fix both field-based and non-field-based lookup.

2002-11-22  Andrew MacLeod  <amacleod@redhat.com>

	* tree-ssa-dce.c (mark_necessary): Split out mark_tree_necessary. Don't
	mark if tree is already marked.
	(mark_tree_necessary): New. Mark tree without processing control parent.
	(mark_control_parent_necessary): Remove recursion, mark trees directly.
	(need_to_preserve_store): Can expression/symbol affect external values.
	(tree_ssa_eliminate_dead_code): Split.
	(find_useful_stmts): Find initial set of needed statements.
	(process_worklist): Find statements which calculate needed statements.
	(remove_dead_stmts): Delete statements which are dead.

2002-11-16  Jason Merrill  <jason@redhat.com>

	Improve tree dumps.
	* c-pretty-print.c, tree-pretty-print.c (dump_c_node): Handle
	integers larger than a host word.
	(op_prio): Handle INIT_EXPR.
	* gimplify.c (simplify_bind_expr): Set TREE_SIDE_EFFECTS and type
	of void_type_node on the COMPOUND_EXPRs as we walk.
	* tree-simple.c (right_assocify_expr): Propagate the type from cur
	rather than rhs.

	* c-decl.c (finish_function): Call c_genericize instead of
	simplify_function_tree.
	* c-simplify.c (c_genericize): New function.
	(simplify_stmt_expr): Just genericize.
	(simplify_compound_literal_expr): Likewise.
	(c_build_bind_expr): Don't build a block for an artificial decl.
	(simplify_decl_stmt): Add the variable to the temps list iff it's
	artificial.
	(c_simplify_expr): Don't call push/pop_context.
	* c-decl.c (build_compound_literal): Set DECL_ARTIFICIAL.
	* c-tree.h: Declare c_genericize.

	* c-simplify.c (tree_build_scope): Remove.

	Remove INIT_EXPR from GIMPLE.
	* c-simplify.c (simplify_decl_stmt): Use MODIFY_EXPR.
	* gimplify.c (simplify_bind_expr): Likewise.
	(simplify_modify_expr): Convert INIT_EXPR to MODIFY_EXPR.

	* c-simplify.c (create_tmp_var_1): Drop; change all users to call
	create_tmp_var.
	(gimple_add_tmp_var): Now adds to the external temps list if
	available, or directly to the function otherwise.

	Avoid gratuitous unused warnings.
	* c-simplify.c (simplify_expr_stmt): Check TREE_SIDE_EFFECTS
	directly.  Also check for explicit conversions to void.
	(expr_has_effect): Remove.

	* Makefile.in (OBJS): Remove tree-dchain.o.

	* stor-layout.c (variable_size): We don't care about
	global_bindings_p if the frontend doesn't want a list of the
	expressions.

2002-11-13  Diego Novillo  <dnovillo@redhat.com>

	* toplev.c (parse_options_and_default_flags): Enable SSA-CCP by
	default with optimization >= 1.
	* tree-dfa.c (find_refs_in_expr): Clobber '*.GLOBAL_VAR', not
	'GLOBAL_VAR'.
	(collect_dfa_stats): Collect statistics on '*.GLOBAL_VAR'.
	(compute_may_aliases): Make sure that variable is an INDIRECT_REF.
	(may_alias_p): GLOBAL_VAR should alias INDIRECT_REFs.
	Only check addressability on VAR_DECLs.
	(find_may_aliases_for): Make sure argument is an INDIRECT_REF.
	* tree-flow-inline.h (indirect_var): Call DECL_P.
	(set_indirect_var): Call DECL_P.
	Create annotation if it doesn't exist.
	(create_indirect_ref): Move from tree-dfa.c.
	* tree-flow.h (create_indirect_ref): Declare.
	* tree-ssa-ccp.c (visit_phi_node): Avoid debugging dump from
	accessing uninitialized data.
	* tree-ssa.c (init_tree_ssa): Create an INDIRECT_REF node for
	.GLOBAL_VAR.

2002-11-12  Diego Novillo  <dnovillo@redhat.com>

	* tree-cfg.c (delete_tree_cfg): Call free_aux_for_blocks.
	Call free_basic_block_vars.

	* gimplify.c (simplify_expr): VA_ARG_EXPR nodes are in GIMPLE form
	already.
	Gimplify BIT_FIELD_REF nodes.
	(simplify_call_expr): Update comment.
	* tree-dfa.c (find_refs_in_expr): VA_ARG_EXPR nodes make no
	data references.
	Handle BIT_FIELD_REF nodes.
	* tree-pretty-print.c (op_prio): Don't write an error message if
	the operand is not recognized.
	* tree-simple.c (is_simple_unary_expr): Handle BIT_FIELD_REFs.
	(is_simplifiable_builtin): Only return false for MD builtins.

2002-11-08  Diego Novillo  <dnovillo@redhat.com>

	* tree-cfg.c (cleanup_switch_expr_graph): Handle edges going to
	EXIT_BLOCK_PTR.
	(first_stmt): Return NULL for ENTRY_BLOCK_PTR, EXIT_BLOCK_PTR and
	INVALID_BLOCK.
	* tree-dfa.c (find_refs_in_expr): Call mark_not_simple.

2002-11-07  Diego Novillo  <dnovillo@redhat.com>

	* Makefile.in (tree-ssa.o, tree-cfg.o, tree-dfa.o): Add dependency
	on function.h
	* tree-cfg.c: Include function.h.
	(build_tree_cfg): Set dump_file to NULL after closing the file.
	(remove_tree_bb): Don't dump warnings about statements being
	removed.
	(dump_tree_cfg): Use current_function_name.
	Check that the flowgraph is not empty before dumping the function
	body.
	(tree_cfg2dot): Use current_function_name.
	* tree-dfa.c: Include function.h
	(dump_dfa_stats): Use current_function_name.
	* tree-optimize.c (optimize_function_tree): Set dump_file to NULL
	after closing the file.
	* tree-pretty-print.c (dump_generic_node): Make sure that the
	flowgraph exists before displaying block boundaries.
	* tree-ssa-ccp.c (tree_ssa_ccp): Set dump_file to NULL after
	closing the file.
	* tree-ssa.c: Include function.h.
	(build_tree_ssa): Set tree_ssa_dump_file to NULL after closing the
	file.
	(dump_reaching_defs): Use current_function_name.
	(dump_tree_ssa): Likewise.

2002-11-07  Diego Novillo  <dnovillo@redhat.com>

	* tree-cfg.c (successor_block): Return EXIT_BLOCK_PTR if no
	successor can be found while walking the nesting chain.

2002-11-07  Diego Novillo  <dnovillo@redhat.com>

	* tree-cfg.c: Fix some formatting in code and comments.
	(set_bb_for_stmt): Move from tree-flow-inline.h
	* tree-dfa.c: Fix some formatting in code and comments.
	* tree-flow-inline.h: Likewise.
	* tree-flow.h: Likewise.
	* tree-ssa.c: Likewise.

2002-11-06  Diego Novillo  <dnovillo@redhat.com>

	* Makefile.in (tree-ssa-ccp.o): Add dependency on tree-inline.h
	* tree-cfg.c (find_taken_edge): New function.
	(cleanup_cond_expr_graph): Call it.
	(disconnect_unreachable_case_labels): Call it.

	* tree-dfa.c (struct clobber_data_d): Remove field
	parent_expr_p.  Update all users.
	(find_refs_in_expr): Remove argument parent_expr_p.  Update all users.
	(create_ref): Remove arguments parent_expr_p and operand_p.  Update
	all users.
	(replace_ref_in): Rename from replace_ref_operand_with.  Update all
	users.  Find the operand in the statement and replace it with a new
	operand.
	(replace_ref_r): New local function.
	(is_killing_def): Also handle V_PHI references.
	(output_ref): Move from tree-flow-inline.h

	* tree-flow-inline.h (ref_expr): Remove.  Update all users.
	(restore_ref_operand): Remove.  Update all users.
	(set_output_ref): Remove.  Update all users.
	(is_assignment_stmt): New function.
	(is_may_def, is_may_use, is_partial_def, is_partial_use,
	is_volatile_def, is_volatile_use, is_default_def,
	is_clobbering_def, is_initializing_def, is_relocating_def,
	is_addressof_use, is_pure_use): Check reference type first.
	(is_pure_def): New function.

	* tree-flow.h (struct tree_ref_common): Remove fields expr_p,
	operand_p and orig_operand.  Update all users.
	(struct tree_ann_d): Remove field output_ref.  Update all users.

	* tree-ssa-ccp.c: Include tree-inline.h.
	(simulate_block): Simulate every statement in the block, not its
	references
	(simulate_def_use_chains): Simulate statements containing uses
	reached by the definition.
	(substitute_and_fold): Traverse statements, not references.
	Call fold_stmt.
	(visit_phi_node): If PHI node is marked volatile, assume varying.
	(visit_stmt): Rename from visit_expression_for.  Work on a
	statement, not a reference.
	(visit_assignment): Rename from visit_assignment_for.  Work on a
	statement, not a reference.
	(visit_cond_stmt): Rename from visit_condexpr_for.  Work on a
	statement, not a reference.
	(evaluate_stmt): Rename from evaluate_expr.  Work on a statement,
	not a reference.
	(initialize): Initialize special definitions to varying.
	(replace_uses_in): Work on a statement, not an expression.
	(fold_stmt): Rename from ccp_fold.  Work on a statement, not an
	expression.
	(get_rhs): New local function.
	(set_rhs): New local function.

2002-11-06  Daniel Berlin  <dberlin@dberlin.org>

	* tree-flow.h: Prototype set_bb_for_stmt, last_stmt_ptr,
	add_ephi_arg, num_ephi_args, set_ephi_arg, ephi_arg.
	(enum tree_ref_type): Add E_LEFT, E_KILL, E_EXIT.

	* tree-cfg.c (set_bb_for_stmt): Move to tree-flow-inline.h.
	(last_stmt_ptr): New function, gives pointer to last statement in
	bb.

	* tree-flow-inline.h: Add exprref_processed, exprref_processed2,
	expruse_phi, num_ephi_args, set_ephi_arg, ephi_arg, add_ephi_arg.

	* tree-dfa.c (tree_ref_structure): Handle E_{LEFT,KILL,EXIT}.
	(ref_type_name): Ditto.
	(tree_ref_size): Ditto.
	(dump_ref): E_PHI's phi_args is now a varray of phi_arg structs.
	(add_ephi_arg): New function.
	(remove_ref_from_list): Fix crash when node not found.
	(compute_may_aliases): Add timing for points-to analysis.

	* timevar.def: Add TV_TREE_PTA.

	* tree-ssa-pre.c: Start of massive cleanup and rewriting (in
	preparation for load/store PRE). No more uses of ref_expr, proper
	call handling. Started removing unnecessary structures and lists,
	started removing redundant and inefficient operations (IE O(n^2)
	loops to process all phi operands, etc).  Basic load PRE implemented.
	Code may look ugly due to large pieces commented out waiting for DFA
	updating of refs to redo.

2002-11-05  Diego Novillo  <dnovillo@redhat.com>

	* tree-cfg.c (create_block_annotations): New local function.
	(create_bb_ann): Remove.  Update all users.
	(parent_array): New local variable.
	(build_tree_cfg): Initialize it.
	Call create_block_annotations.
	(create_bb): Call alloc_block instead of ggc_alloc to allocate
	memory for basic blocks.
	Don't call set_parent_block.
	Grow array parent_array.
	(dump_tree_cfg): Change meaning of second argument.  Make it accept
	any of the TDF_* flags defined in tree.h.
	(delete_tree_cfg): Call free_aux_for_blocks.
	Free array parent_array.
	* tree-flow-inline.h (get_filename): New function.
	(is_exec_stmt): return false if T is error_mark_node.
	* tree-flow.h (struct var_ref_d): Mark alias_imm_rdefs field for
	garbage collection.
	(get_filename): Declare.
	(struct bb_ann_d): Rename from bb_ann_def.
	Remove garbage collection markers.
	(referenced_vars): Mark for garbage collection.
	(global_var): Likewise.
	(create_bb_ann): Remove.
	* tree-optimize.c (optimize_function_tree): Remove CFG and SSA
	after debugging dumps.

	* diagnostic.h (print_generic_stmt): Rename from print_generic_tree.
	Update all users.
	(print_generic_expr): Rename from print_generic_node.  Update all
	users.
	(PPF_BRIEF): Remove.  Update all users.
	(PPF_BLOCK): Remove.  Update all users.
	(PPF_LINENO): Remove.  Update all users.
	(PPF_IS_STMT): Remove.  Update all users.
	* flags.h (flag_dump_tree_all_ssa): Remove.  Update all users.
	* toplev.c (f_options): Remove entry for -fdump-tree-all-ssa.
	Update all users.
	* tree-dump.c (dump_enable_all): Rename from dump_enable_all_ssa.
	Update all users.
	(dump_files): Add entry for -fdump-tree-all.
	(dump_option_value_info): Remove entries for TDF_REFS and
	TDF_RDEFS.
	Add entry for TDF_BLOCK.
	(dump_switch_p): If -fdump-tree-all was given, call dump_enable_all.
	* tree-pretty-print.c (PPF_BRIEF): Remove.  Update all users.
	(PPF_BLOCK): Remove.  Update all users.
	(PPF_LINENO): Remove.  Update all users.
	(PPF_IS_STMT): Remove.  Update all users.
	(dumping_stmts): New local variable.
	(print_generic_stmt): Rename from print_generic_tree.  Update all
	users.
	Set dumping_stmts to true.
	(print_generic_expr): Rename from print_generic_node.  Update all
	users.
	Set dumping_stmts to false.
	(maybe_init_pretty_print): Set last_bb to -1.
	(dump_block_info): If available, dump file and line number
	information for the first statement in the basic block.
	* tree-ssa.c (build_tree_ssa): Dump referenced variables and
	reaching definition information if -details is given.
	* tree.h (enum tree_dump_index): Rename TDI_all to TDI_tu.  Update
	all users.
	Add new index TDI_all.
	(TDF_DETAILS): Change value.
	(TDF_REFS): Remove.  Update all users.
	(TDF_RDEFS): Remove.  Update all users.
	(TDF_BLOCK): Define.
	* doc/invoke.texi: Update documentation for -fdump-tree-... flags.

2002-11-05  Frank Ch. Eigler  <fche@redhat.com>

	* tree-mudflap.c (mudflap_enqueue_decl, _constant): Use
	size_in_bytes, not c_size_in_bytes.
	(mf_init_extern_trees): Import uintptr_t typedef node from
	mf-runtime.h.

2002-11-01  Diego Novillo  <dnovillo@redhat.com>

	* tree-cfg.c (remove_tree_bb): Add new argument remove_stmts.
	Update all callers.
	(make_ctrl_stmt_edges): Add an edge to the body of a SWITCH_EXPR.
	(make_cond_expr_edges): Don't try to linearize the if() subgraph.
	(make_case_label_edges): Don't remove the fallthru edge from the
	entry block to the switch() subgraph.
	(cleanup_tree_cfg): Call cleanup_control_flow.
	(remove_unreachable_blocks): Remove blocks of compound structures
	before removing the entry block.
	(remove_blocks): New local function.
	(blocks_unreachable_p): New local function.
	(is_nonlocal_label_block): New local function.
	(find_subblocks): New local function.
	(is_parent): New local function.
	(gsi_remove): New function.
	(remove_stmt): New local function.
	(cleanup_control_flow): New local function.
	(cleanup_cond_expr_graph): New local function.
	(cleanup_switch_expr_graph): New local function.
	(disconnect_unreachable_case_labels): New local function.

	* tree-dfa.c (remove_decl): New function.
	(find_decl_location): New function.

	* tree-flow.h (gsi_remove): Declare.
	(remove_decl): Declare.
	(find_decl_location): Declare.

	* tree-ssa-ccp.c (optimize_unexecutable_edges): Remove.  Update all
	users.
	(ssa_ccp_df_delete_unreachable_insns): Remove.  Update all users.
	(tree_ssa_ccp): Call print_generic_tree with PPF_BLOCK.

2002-10-31  Diego Novillo  <dnovillo@redhat.com>

	* tree-dfa.c (create_indirect_ref): New local function.
	(find_refs_in_expr): Call it.
	(create_ref): Check E_* reference types with == instead of &.
	(dump_ref): Likewise.
	(count_tree_refs): Likewise.
	* tree-ssa.c (set_ssa_links): Update documentation comment for
	save_chain.

2002-10-31  Diego Novillo  <dnovillo@redhat.com>

	* tree-cfg.c (remove_tree_bb): Don't walk beyond the end of the
	basic block.

2002-10-26  Daniel Berlin  <dberlin@dberlin.org>

	* flags.h: Remove flag_tree_points_to from here.
	* toplev.c: Include tree-alias-common.h.
	(flag_tree_points_to): Now of type enum pta_type, rather than
	int.
	(lang_independent_options): Remove flag_tree_points_to.
	(display_help): Display help for tree-points-to here.
	(decode_f_option): Allow selecting of points-to algorithm.
	* tree-alias-common.c (varmap): Removed.
	(alias_annot): Changed to a hash table.  Update all functions
	appropriately.
	(FIELD_BASED): New macro, switches between field-based analysis,
	and field-independent analysis (field-based isn't quite done yet).
	(alias_annot_entry): New, used in hash table.
	(annot_eq): New function.
	(annot_hash): New function.
	(find_func_aliases): Handle casts, fix indendation.
	(splaycount): Removed.
	(splay_tree_count): Removed.
	(display_points_to_set): Removed.
	(splay_tree_size): Removed.
	(alias_get_name): New function.
	(ptr_may_alias_var): Globals are a bit funky to handle.
	* tree-alias-steen.c: Use alias_get_name, rather than
	print_generic_node.
	(steen_simple_assign): Handle assignment of PTF's.
	(test_assign): Remove.
	* tree-alias-common.h (enum pta_type): New.
	(alias_get_name): New.
	(flag_tree_points_to): New.

2002-10-26  Diego Novillo  <dnovillo@redhat.com>

	* tree-cfg.c (cleanup_tree_cfg): Uncomment call to
	compact_blocks.

2002-10-26  Diego Novillo  <dnovillo@redhat.com>

	* Makefile.in (tree-pretty-print.o): Depend on $(TREE_FLOW_H)
	* basic-block.h (BB_COMPOUND_ENTRY): Rename from BB_CONTROL_ENTRY.
	* diagnostic.h (dump_generic_tree): Remove extern declaration.
	(print_generic_node_brief): Remove.  Update all users.
	(PPF_BRIEF): Declare.
	(PPF_BLOCK): Declare.
	(PPF_LINENO): Declare.
	(PPF_IS_STMT): Declare.
	* tree-pretty-print.c (PPF_BRIEF): New constant.
	(PPF_BLOCK): New constant.
	(PPF_LINENO): New constant.
	(PPF_IS_STMT): New constant.
	(dump_block_info): New local function.
	(last_bb): New local variable.
	(dump_generic_tree): Remove unused function.
	(print_generic_tree): Add third argument 'flags'.  Update all
	users.
	(print_generic_node_brief): Remove.  Update all users.
	(print_generic_node): Add third argument 'flags'.  Update all
	users.
	(dump_generic_node): Add third argument 'flags'.  Update all users.
	If PPF_BLOCK is set, display basic block information at basic block
	boundaries.
	If PPF_IS_STMT is set, change the way COMPOUND_EXPR nodes are
	rendered.
	If PPF_BRIEF is set, don't show the bodies of control statements.
	(print_declaration):

	* toplev.c (process_options): Update comment for -fdisable-simple.

	* tree-cfg.c (remove_tree_bb): Rename from tree_delete_bb.
	(latch_block): Move declaration to tree-flow.h.  Declare extern.
	(make_blocks): Start a new block after finding a control flow
	altering statement.
	(make_loop_expr_blocks): Set the loop entry block to be the parent
	block for the loop latch block.
	(cleanup_tree_cfg): Rename from tree_cleanup_cfg.
	Call compact_blocks.
	(remove_tree_bb): Rename from tree_delete_bb.  Update all users.
	(dump_tree_bb): Rename from dump_tree_bb.  Update all users.
	Dump information about loop latch blocks.
	(debug_tree_bb): Rename from tree_debug_bb.  Update all users.
	(debug_tree_cfg): Rename from tree_debug_cfg.  Update all users.
	(dump_tree_cfg): Rename from tree_dump_cfg.  Update all users.
	By default, dump the function with markers for basic block
	boundaries.
	(successor_block): If we can't find a successor following the
	parent chain, return the next block in the linked list of blocks.
	Update documentation comments.
	(stmt_starts_bb_p): Don't let RETURN_EXPR start a new block.
	(is_latch_block): New function.
	(first_exec_stmt): Don't treat BIND_EXPR nodes as a special case.
	(first_stmt): Return NULL_TREE if the block does not exist.
	(last_stmt): Likewise.

	* tree-dfa.c (find_tree_refs): Rename from tree_find_refs.  Update
	all users.
	(find_refs_in_stmt): Handle BIND_EXPR nodes.
	(rli_start): Move from tree-flow-inline.h
	(rli_start_last): Likewise.
	(rli_start_at): Likewise.
	(rli_delete): Likewise.

	* tree-flow-inline.h (gsi_start_bb): Handle NULL blocks.
	(ref_list_is_empty): New function.
	* tree-flow.h (rli_start): Change declaration to extern.
	(rli_start_last): Likewise.
	(rli_start_at): Likewise.
	(rli_delete): Declare.
	(latch_block): Declare.
	(is_latch_block): Declare.
	(get_last_ref): Change to inline declaration.
	(get_first_ref): Likewise.
	(ref_list_empty): Declare.

	* tree-optimize.c (delete_tree_ssa): Remove declaration.

	* tree-ssa-dce.c (mark_control_parent_necessary): Call gsi_step_bb
	instead of gsi_step.
	(tree_ssa_eliminate_dead_code): Likewise.

	* tree-ssa.c (compute_tree_rdefs): Rename from compute_tree_rdefs.
	Update all users.

2002-10-22  Diego Novillo  <dnovillo@redhat.com>

	* tree-dfa.c (struct dfa_stats_d): Add field size_tree_refs.
	(tree_ref_size): New function.
	(create_ref): Call it.
	(dump_dfa_stats): Get total size from dfa_stats.size_tree_refs.
	(count_tree_refs): Call tree_ref_size.
	* tree-flow-inline.h (get_last_ref): New function.
	(get_first_ref): New function.
	* tree-flow.h (struct var_ref_d): Rename from var_ref.
	(struct var_def_d): Rename from var_def.
	(struct var_phi_d): Rename from var_phi.
	(struct var_use_d): Rename from var_use.
	(struct expr_phi_d): Rename from expr_phi.
	(struct expr_use_d): Rename from expr_use.
	* tree-ssa-ccp.c (tree_ssa_ccp): Call get_last_ref.

2002-10-21  Daniel Berlin  <dberlin@dberlin.org>

	* timevar.def: Add TV_TREE_{PRE,CCP,DCE,CFG,SSA}} timevars.

	* tree-optimize.c (optimize_function_tree): Push and pop timevars
	for the tree optimizers.

2002-10-21  Diego Novillo  <dnovillo@redhat.com>

	* Makefile.in (OBJS): Move tree-mudflap.o ...
	(C_AND_OBJC_OBJS): ... here.

2002-10-21  Diego Novillo  <dnovillo@redhat.com>

	* tree-flow-inline.h (rli_start): New function.
	(rli_start_rev): New function.
	(rli_start_at): New function.
	(rli_after_end): New function.
	(rli_step): New function.
	(rli_step_rev): New function.
	(rli_ref): New function.
	* tree-flow.h (struct ref_list_iterator): Declare.
	(FOR_REF_BETWEEN, FOR_EACH_REF, FOR_EACH_REF_REV): Replace with new
	rli_* iterator functions.  Update all users.

2002-10-21  Frank Ch. Eigler  <fche@redhat.com>

	* tree-cfg.c (make_blocks): Ignore TRY_FINALLY_EXPR and
	TRY_CATCH_EXPR.
	* tree-mudflap.c (mx_register_decls): Ignore local decls
	of extern variables of unknown size.

2002-10-20  Daniel Berlin  <dberlin@dberlin.org>

	* tree-ssa-pre.c (repair_injury): DTRT, rather than abort.

	* tree-dfa.c (ref_type_name): E_* don't have these modifier
	fields, but may have the same bits set, so don't print the
	modifiers on them.

	* gimplify.c (create_tmp_var): New function, wraps calls to
	create_tmp_var_1 with pushing/popping of right context.
	All internal gimplify.c now use create_tmp_var_1.
	(create_tmp_var_noc): New function, create the var without
	pushing/popping, and without exposing internals of create_tmp_var_1.
	Only one use of this.

	* tree-simple.h (create_tmp_var_noc): New prototype.

	* c-simplify.c (simplify_stmt_expr): create_tmp_var changed to
	create_tmp_var_noc.

	* tree-ssa-pre.c: Add WAITING_FOR_DFA_UPDATE around code waiting for DFA
	functions to keep refs up to date.
	(add_call_to_ei): occurs and occurstmts is now an
	array of tree pointers, not trees. Update approriately.
	(insert_occ_in_preorder_dt_order_1): Ditto.
	(tree_perform_ssapre): Ditto.
	(find_use_for_var): Removed function.
	(orig_expr_map): Removed global, removed uses.
	(struct ei): Added injfixups member.
	(is_strred_cand): STRIP_WFL the expression.
	(calculate_increment): Ditto.
	(is_injuring_def): Ditto.
	(defs_y_dom_x): Ditto. Also account for fact that y is now a full
	expression, not just an RHS.
	(defs_match_p): Ditto (t2 is no longer just an RHS).
	(finalize_1): Do insertion by replacement.
	(repair_injury): Clean up, do insertion by replacement.
	(find_reaching_def_of_var): Do backwards search in a cleaner way.
	(update_ssa_for_new_use): Change how we do replacement.
	(code_motion): Insertion by replacement. Print EXPR_WFL_LINENO, not
	STMT_LINENO.
	(pre_part_1_trav): Just create_tmp_var will now suffice.

2002-10-18  Diego Novillo  <dnovillo@redhat.com>

	* tree-dfa.c (find_refs_in_expr): Change type of second argument to
	enum tree_ref_type.  Add third argument ref_mod.  Update all users.
	(create_ref): Add third argument ref_mod.  Decode bitmask to set
	the individual bitfields in the new reference.
	* tree-flow-inline.h (is_may_ref): New function.
	(is_may_def): New function.
	(is_may_use): New function.
	(is_partial_ref): New function.
	(is_partial_def): New function.
	(is_partial_use): New function.
	(is_volatile_ref): New function.
	(is_volatile_def): New function.
	(is_volatile_use): New function.
	(is_default_def): New function.
	(is_clobbering_def): New function.
	(is_initializing_def): New function.
	(is_relocating_def): New function.
	(is_addressof_use): New function.
	(is_pure_use): New function.
	* tree-flow.h (V_DEF, V_USE, V_PHI, E_PHI, E_USE, E_KILL): Redefine
	inside enum tree_ref_type.  Update all users.
	(enum tree_ref_type): Define.
	(TRM_DEFAULT, TRM_CLOBBER, TRM_MAY, TRM_PARTIAL, TRM_INITIAL,
	TRM_VOLATILE, TRM_RELOCATE): Rename from M_*.  Update all users.
	(struct tree_ref_common): Change type of field 'type' to enum
	tree_ref_type.  Update all users.
	(struct var_ref): Add bitfields 'm_may', 'm_partial' and 'm_volatile'.
	(struct var_def): Add bitfield 'm_default', 'm_clobber', 'm_initial'
	and 'm_relocate'.
	(struct var_use): Add bitfield 'm_addressof'.
	(ref_type): Change return type to enum tree_ref_type.  Update all
	users.
	(create_ref): Add new argument ref_mod.  Update all users.
	(function_may_recurse_p): Change return type to bool.  Update all
	users.
	(ref_type_name): Change argument type to tree_ref.  Update all
	users.
	(validate_ref_type): Remove.

2002-10-18  Diego Novillo  <dnovillo@redhat.com>

	* cp/Make-lang.in (CXX_C_OBJS): Remove tree-cfg.o, tree-dfa.o,
	tree-optimize.o, tree-ssa.o, tree-ssa-pre.o, gimplify.o, tree-simple.o,
	tree-alias-steen.o, tree-alias-ecr.o, tree-alias-type.o,
	disjoint-set.o, tree-ssa-ccp.o, tree-dchain.o, tree-alias-common.o,
	and tree-ssa-dce.o.

2002-10-17  Diego Novillo  <dnovillo@redhat.com>

	* Makefile.in (TREE_FLOW_H): Add bitmap.h, basic-block.h,
	hard-reg-set.h and tree-simple.h.  Update all users.
	(C_AND_OBJC_OBJS): Move tree-cfg.o, tree-dfa.o,
	tree-ssa.o, tree-optimize.o, c-simplify.o, c-call-graph.o,
	tree-simple.o, simple-break-elim.o, simple-goto-elim.o, tree-dchain.o,
	tree-ssa-pre.o, tree-alias-type.o, tree-mudflap.o, gimplify.o,
	tree-alias-ecr.o, tree-alias-common.o, tree-alias-steen.o,
	disjoint-set.o, tree-ssa-ccp.o and tree-ssa-dce.o ...
	(OBJS): ... here.
	(gimplify.o): Add dependency on $(TREE_FLOW_H).
	(tree-pretty-print.o): New rule.
	(GTFILES): Add tree-flow.h
	* c-config-lang.in (gtfiles): Remove tree-flow.h
	* c-simplify.c (copy_if_shared_r, unmark_visited_r,
	unshare_all_trees, mark_not_simple): Move ...
	* gimplify.c: ... here.
	Include tree-flow.h
	* tree-flow.h: Include hard-reg-set.h.

	* c-common.h (print_c_tree, print_c_node, print_c_node_brief,
	debug_c_tree, debug_c_node, debug_c_node_brief): Move declarations
	from diagnostic.h.
	* c-call-graph.c (construct_call_graph): Call get_name.
	(print_callee): Likewise.
	* c-pretty-print.c (print_declaration): Declare static.
	(print_function_decl): Likewise.
	(print_struct_decl): Likewise.
	(dump_c_tree): Likewise.
	(dump_c_node): Likewise.
	* diagnostic.h (dump_generic_tree, dump_generic_node,
	print_generic_tree, print_generic_node, print_generic_node_brief):
	Declare.
	* tree-pretty-print.c: New file.
	* c-decl.c: Replace calls to print_c_node with print_generic_node.
	* tree-alias-common.c: Likewise.
	* tree-alias-steen.c: Likewise.
	* tree-cfg.c: Likewise.
	* tree-dfa.c: Likewise.
	* tree-mudflap.c: Likewise.
	* tree-optimize.c: Likewise.
	* tree-ssa-ccp.c: Likewise.
	* tree-ssa-pre.c: Likewise.
	* tree-ssa-dce.c: Likewise.
	Don't include c-common.h nor c-tree.h
	(tree_ssa_eliminate_dead_code): Don't call COMPOUND_BODY.
	Replace ASM_STMT with ASM_EXPR.  Don't check for EXPR_STMT.

2002-10-17  Daniel Berlin  <dberlin@dberlin.org>
	    Diego Novillo  <dnovillo@redhat.com>

	* tree-cfg.c (remove_bb_ann): Remove.  Update all users.
	(delete_tree_cfg): Set bb->aux to NULL in all basic blocks.
	* tree-dfa.c: Remove extern declaration for tree_find_refs.
	(create_ref_list): Allocate new list with ggc_alloc.
	(empty_ref_list): Just set first and last element to NULL.
	(delete_ref_list): Remove.  Update all users.
	(remove_ref_from_list): Don't call free.
	(add_ref_to_list_begin): Allocate new node with ggc_alloc.
	(add_ref_to_list_end): Likewise.
	(add_ref_to_list_after): Likewise.
	(create_ref): Call BITMAP_GGC_ALLOC.
	(remove_tree_ann): Remove.  Update all users.
	(tree_ref_structure): New function.
	* tree-flow.h (edge, basic_block): Forward declare if necessary.
	(struct ref_list_node): Mark for garbage collection.
	(struct ref_list_priv): Likewise.
	(struct tree_ref_common): Likewise.
	(struct var_ref): Likewise.
	(struct var_def): Likewise.
	(struct var_phi): Likewise.
	(struct var_use): Likewise.
	(struct phi_node_arg_d): Likewise.
	(struct expr_ref_common): Likewise.
	(struct expr_phi): Likewise.
	(struct expr_use): Likewise.
	(union tree_ref_d): Likewise.
	(struct tree_ann_d): Likewise.
	(struct bb_ann_def): Likewise.
	(referenced_vars): Likewise.
	(global_var): Likewise.
	(enum tree_ref_structure_enum): New.
	(call_sites): Remove unused function.
	* tree-inline.c (copy_tree_r): Copy the 'ann' field from tree_common.
	* old-tree-inline.c (copy_tree_r): Likewise.
	* tree-ssa.c (added): Mark for garbage collection.
	(in_work): Likewise.
	(work_stack): Likewise.
	(delete_tree_ssa): Set global_var to NULL_TREE.
	* tree.h (struct tree_ann_d): Forward declare.
	(struct tree_common): Rename field 'aux' to 'ann'.  Update all
	users.  Don't mark it 'skip' for garbage collection.

2002-10-16  Daniel Berlin  <dberlin@dberlin.org>

	* tree-dfa.c (compute_may_aliases): Call create/delete_alias_vars
	if flag_tree_points_to is on.
	(may_alias_p): Use points-to info if user asked us to generate it.

	* tree-optimize.c (optimize_function_tree): Don't call
	create_alias_vars here.

2002-10-16  Diego Novillo  <dnovillo@redhat.com>

	* tree-cfg.c (make_cond_expr_edges): If the conditional has known
	value, only make the edge to the corresponding branch.
	(tree_delete_bb): Write a warning to the dump file when removing
	blocks with executable statements.
	(first_exec_stmt): Skip over empty BIND_EXPR blocks.

	* tree-dfa.c (find_refs_in_expr): Don't look for references in non
	GIMPLE statements.
	(remove_tree_ann): Clear the annotation with memset.
	(collect_dfa_stats_r): Don't call tree_annotation.
	(find_may_aliases_for): Avoid adding the same alias more than once.
	(may_alias_p): Fix comment grammar.

	* tree-flow-inline.h (is_exec_stmt): New function.
	* tree-flow.h (FOR_EACH_REF): Guard against NULL lists.
	(FOR_EACH_REF_REV): Likewise.
	(is_exec_stmt): Declare.

	* tree-ssa-ccp.c (visit_phi_node): Reformat debug dumping output.
	(visit_expression_for): Move check for clobbering definitions
	before check for NULL expressions.
	(visit_condexpr_for): Reformat debug dumping output.
	(set_lattice_value): Remove stale comments.
	(replace_uses_in): Don't clear TF_FOLDED flag from expression.

	* tree-ssa.c (add_phi_node): If possible, associate the PHI node to
	a statement.
	(create_default_def): Create initial declarations for static
	variables with DECL_INITIAL set.
	(delete_tree_ssa): Remove annotations from variables.

2002-10-16  Daniel Berlin  <dberlin@dberlin.org>

	* tree-alias-type.c (alias_tvar_new_with_aterm): New function.
	Update all allocations to allocate right type, rather than the union.
	Update to use macros to access members of alias_typevar.

	* tree-alias-type.h: Split alias_typevar into a common, an ECR, and
	an aterm, update all users.
	Add macros to access members of union.

	* tree-alias-common.c (create_alias_var): Handle function_decl's
	properly (needed for proper handling of function pointers).
	Updates for macros to access typevars.
	Fix some indentation.

	* tree-alias-steen.c: Updates for macros to access typevars.

2002-10-16  Frank Ch. Eigler  <fche@redhat.com>

	* c-decl.c (c_expand_body): Enable mudflap, only for gimple.
	* c-pretty-print.c (dump_c_node): Render try/catch/finally exprs.
	(op_prio): Accept BIND_EXPRs.
	* gcc.c (cpp_unique_options): Make -fmudflap -include mf-runtime.h.
	* toplev.c (process_options): Complain on -fmudflap -fdisable-simple.
	* tree-mudflap.c (*): Reorganize for generic/gimple operation.
	(mf_init_extern_trees): Extract decl nodes from -include'd file.
	(mf_external_ref, mf_decl_extern_trees): Removed; updated callers.
	(mf_offset_expr_of_array_ref): Don't bother store index type as
	TREE_PURPOSE.
	(mf_build_check_statement_for): Use GIMPLE tree types and builders.
	(mx_register_decls): New function, replacing mx_register_decl.
	(mx_xfn_xform_decls): Support only GIMPLE input tree types.
	(mf_flush_enqueued_calls): Clean up enqueued call statements.

2002-10-14  Diego Novillo  <dnovillo@redhat.com>

	* toplev.c (parse_options_and_default_flags): Undo local
	hack that slipped in the previous commit.

2002-10-14  Diego Novillo  <dnovillo@redhat.com>

	* Makefile.in (c-decl.o): Add dependency on diagnostic.h.
	* c-decl.c: Include diagnostic.h
	(c_expand_body): Call get_name.

	* basic-block.h (struct basic_block_def): Rename head_tree to
	head_tree_p and end_tree to end_tree_p.  Change type to tree *.
	Update all users.
	(BLOCK_HEAD_TREE): Remove.  Update all users.
	(BLOCK_END_TREE): Remove.  Update all users.
	* tree-cfg.c (build_tree_cfg): Return if function body is empty.
	(make_blocks): Change first argument to tree *.  Update all users.
	(make_bind_expr_blocks): Likewise.
	(make_loop_expr_blocks): Likewise.
	(make_cond_expr_blocks): Likewise.
	(make_switch_expr_blocks): Likewise.
	(create_bb): Likewise.
	(first_exec_block): Likewise.
	(first_exec_stmt): Likewise.
	(tree_delete_bb): Use a gimple statement iterator to unmap
	statements.
	(insert_stmt_before): Remove empty function.
	(replace_expr_in_tree): Remove.  Update all users.
	(find_expr_in_tree_helper): Likewise.
	(find_expr_in_tree): Likewise.
	(first_stmt): Call STRIP_NOPS.
	(last_stmt): Call STRIP_NOPS.

	* tree-dfa.c (struct clobber_data_d): Rename parent_stmt to
	parent_stmt_p and parent_expr to parent_expr_p.  Change types to
	tree *.  Update all users.
	(find_refs_in_stmt): Change first argument type to tree *.  Update
	all users.
	(find_refs_in_expr): Chnage arguments parent_stmt and parent_expr
	to tree *.  Update all users.
	(create_ref): Don't add the same reference twice on the same list
	when parent_stmt and parent_expr are the same node.
	Don't set output_ref when the parent statement is not in GIMPLE
	form.
	(replace_ref_operand_with): Move from tree-flow-inline.h
	(replace_ref_expr_with): New function.
	(replace_ref_stmt_with): New function.
	(create_tree_ann): Abort if trying to annotate certain nodes.
	Don't create an empty ref list.
	In the presence of WFL or NOPS wrappers, add the annotation to the
	inner node.
	(dump_ref): Don't call tree_annotation to access the tree
	annotation.

	* tree-flow.h (struct tree_ref_common): Rename field stmt to stmt_p
	and field expr to expr_p.  Change types to tree *.  Update all
	users.
	(replace_ref_expr_with): Declare.
	(replace_ref_stmt_with): Declare.
	(insert_stmt_before, insert_stmt_after, replace_expr_in_tree,
	find_expr_in_tree): Remove.
	* tree-flow-inline.h (ref_expr): Return NULL_TREE if expr_p is
	NULL.
	(ref_stmt): Return NULL_TREE if stmt_p is NULL.
	(tree_annotation): Call STRIP_WFL and STRIP_NOPS before returning
	the annotation.
	(add_tree_ref): Remove consistency checks.  Create an empty list
	the first time.
	(get_lineno): Return -1 on NULL_TREE.
	(set_output_ref): Remove consistency.
	(set_tree_flag): Likewise.
	(clear_tree_flag): Likewise.
	(reset_tree_flags): Likewise.
	* tree-simple.h (gimple_stmt_iterator): Rename ptr to tp.  Change
	type to tree *.  Update all users.
	(gsi_start): Change argument type to tree *.  Update all users.
	(gsi_stmt_ptr): New function.
	(gsi_container): New function.

	* tree-optimize.c (optimize_function_tree): Don't test fnbody for
	NULL.
	Re-enable optimizers.
	* tree-ssa-ccp.c: Update documentation comments.
	Don't include c-common.h and c-tree.h.
	(tree_ssa_ccp): Don't call COMPOUND_BODY.
	(ccp_fold): New private function.
	(substitute_and_fold): Call it.
	Call replace_ref_expr_with.
	Set TF_FOLDED flag on the statement, not the expression.
	(visit_assignment_for): Call STRIP_NOPS and STRIP_WFL.
	(evaluate_expr): Call ccp_fold.  Only use the RHS of the simplified
	value in the case of MODIFY_EXPR or INIT_EXPR.
	(restore_expr):
	* tree-ssa-dce.c (mark_control_parent_necessary): Use a gimple
	iterator.
	(tree_ssa_eliminate_dead_code): Likewise.
	* tree-ssa-pre.c: Disable and add warning comments for out-of-date
	calls to create_ref, find_refs_in_stmt and replace_expr_in_tree.

2002-10-12  Daniel Berlin  <dberlin@dberlin.org>

	* tree-alias-type.h  (alias_typevar_def): Add struct aterm
	as a temporary hack for andersen's analysis.
	* tree-alias-common.c (current_alias_ops): New, use it
	instead of referring to steen_alias_ops everywhere.
	(get_alias_var): Use STRIP_WFL.
	(find_func_aliases): Ditto.
	(create_alias_vars): Call init function, move deletion to
	delete_alias_vars.
	(delete_alias_vars): New function, move deletion code to here.
	(get_virtual_var): Removed.
	(ptr_may_alias_var): New function.
	* tree-alias-common.h (struct tree_alias_ops): Add may_alias
	function.
	* tree-alias-steen.c (steen_may_alias): New function.

2002-10-10  Falk Hueffner  <falk.hueffner@student.uni-tuebingen.de>

	* diagnostic.h (dump_c_tree, dump_c_node,
	print_declaration, print_function_decl,
	print_struct_decl): Fix argument types.

2002-10-10  Diego Novillo  <dnovillo@redhat.com>

	* tree.h (struct tree_common): Rename field unused_0 to
	not_gimple_flag.
	(TREE_NOT_GIMPLE): Define.
	* c-simplify.c (mark_not_simple_r): Remove.  Update all users.
	(mark_not_simple): Set TREE_NOT_GIMPLE.
	* gimplify.c (simplify_call_expr): Enable call to mark_not_simple.
	* tree-flow.h (TF_NOT_SIMPLE): Remove.  Update all users.

	* tree-cfg.c (build_tree_cfg): Rename from tree_find_basic_blocks.
	Update all users.
	Find the first executable statement before starting basic block 0.
	(make_blocks): Do not accept TRY_FINALLY_EXPR and TRY_CATCH_EXPR
	nodes.
	(make_edges): Always create an edge from entry to basic block 0.
	(delete_tree_cfg): Rename from delete_cfg.  Update all uses.
	(first_exec_stmt): Return the container for the first statement,
	not the statement itself.

	* tree-dfa.c (tree_find_refs): Re-implement using a GIMPLE
	iterator.
	(find_refs_in_stmt): Handle GIMPLE statements.
	(find_refs_in_expr): Call flags_from_decl_or_type when handling
	CALL_EXPR expressions.
	(create_ref): Call DECL_P.
	(remove_tree_ann): Call tree_annotation.

	* tree-flow-inline.h (gsi_step_bb): Stop if statement is not inside
	a basic block.

	* tree-flow.h (build_tree_cfg): Rename from tree_find_basic_blocks.
	Update all users.
	(delete_tree_cfg): Rename from delete_cfg.
	(tree_find_refs): Declare.
	(build_tree_ssa): Rename from tree_build_ssa.
	(is_upward_exposed): Remove unused function.
	* tree-optimize.c (delete_tree_ssa): Remove declaration.
	(optimize_function_tree): Re-enable SSA builder.
	* tree-simple.h (gsi_container): New function.

	* Makefile.in (tree-ssa.o): Remove dependencies on c-common.h and
	c-tree.h.
	* tree-ssa.c: Don't include c-common.h nor c-tree.h.
	(tree_find_refs): Remove declaration.
	(remove_annotations_r): New local function.
	(build_tree_ssa): Rename from tree_build_ssa.  Update all users.
	(analyze_rdefs): Don't call prep_stmt.
	(is_upward_exposed): Remove unused function.
	(add_phi_node): Don't associate the PHI node to a statement.
	(delete_tree_ssa): Receive the function body as argument.
	Walk the function body removing annotations from every tree.

2002-10-10  Steven Bosscher  <s.bosscher@student.tudelft.nl>

	* tree-ssa-dce (tree_ssa_eliminate_dead_code): Initialize prev to
	NULL_TREE.
	Don't close dump_file until end of function.
	Dump the tree after DCE for -fdump-tree-dce.

2002-10-08  Richard Henderson  <rth@redhat.com>
	    Jason Merrill  <jason@redhat.com>
	    Diego Novillo  <dnovillo@redhat.com>

	* tree-simple.h (gimple_stmt_iterator): New type.
	(gsi_start): New function.
	(gsi_after_end): New function.
	(gsi_step): New function.
	(gsi_stmt): New function.

2002-10-08  Diego Novillo  <dnovillo@redhat.com>

	* calls.c (flags_from_decl_or_type): Make extern.
	(ECF_*): Move ...
	* rtl.h (ECF_*): ... here.
	(flags_from_decl_or_type): Declare.

	* tree.h (COND_EXPR_COND): Define.
	(COND_EXPR_THEN): Define.
	(COND_EXPR_ELSE): Define.
	(LABEL_EXPR_LABEL): Define.
	(optimize_function_tree): Declare.

2002-10-08  Diego Novillo  <dnovillo@redhat.com>

	* Makefile.in (TREE_FLOW_H): Define.
	(c-decl.o): Remove dependency on tree-optimize.h.
	(tree-alias-steen.o, tree-alias-common.o, tree-ssa.o, tree-ssa-pre.o,
	 tree-cfg.o, tree-dfa.o, tree-optimize.o, c-simplify.o, c-call-graph.o,
	 tree-ssa-dce.o, tree-ssa-ccp.o): Depend on $(TREE_FLOW_H).
	(tree-cfg.o): Remove dependencies on c-tree.h and c-common.h.
	* c-call-graph.c (construct_call_graph): Disable calls to removed
	functions.
	* c-decl.c: Don't include tree-optimize.h.
	(c_expand_body): Enable calls to optimize_function_tree.

	* c-pretty-print.c (dump_c_node): Fix printf warnings.
	Only dump the first node of a COMPOUND_EXPR when brief_dump is set.
	Use COND_EXPR_COND, COND_EXPR_THEN and COND_EXPR_ELSE accessors.
	Only dump the opening brace of a BIND_EXPR when brief_dump is set.

	* tree-cfg.c: Don't include tree-optimize.h, c-common.h and c-tree.h.
	(binding_stack, make_for_stmt_blocks, make_if_stmt_blocks,
	 make_while_stmt_blocks, make_switch_stmt_blocks,
	 make_do_stmt_blocks, create_maximal_bb, make_for_stmt_edges,
	 make_while_stmt_edges, make_do_stmt_edges, make_if_stmt_edges,
	 make_break_stmt_edges, make_continue_stmt_edges, create_loop_hdr,
	 insert_before_ctrl_stmt, insert_before_normal_stmt,
	 insert_after_ctrl_stmt, insert_after_normal_stmt,
	 insert_after_loop_body, tree_split_bb, stmt_ends_bb_p): Remove.
	Update all users.
	(STRIP_CONTAINERS): Define.
	(make_bind_expr_blocks): New local function.
	(make_cond_expr_blocks): New local function.
	(make_loop_expr_blocks): New local function.
	(make_switch_expr_blocks): New local function.
	(make_loop_expr_edges): New local function.
	(make_cond_expr_edges): New local function.
	(make_case_label_edges): New local function.
	(first_exec_block): New local function.
	(make_goto_expr_edges): Rename from make_goto_stmt_edges.
	(make_blocks): Remove arguments COMPOUND_STMT and PREV_CHAIN_P.
	Use gimple_stmt_iterator to iterate over the statements in the
	function.  Create maximal basic blocks during traversal.
	(create_bb): Remove arguments end, prev_chain_p and binding_scope.
	Rename control_parent to parent_block.
	(set_bb_for_stmt): Move from tree-flow.h.
	(make_edges): Don't assume that basic block 0 contains executable
	statements.
	Handle BIND_EXPR nodes.
	(make_ctrl_stmt_edges): Handle LOOP_EXPR, COND_EXPR and
	SWITCH_EXPR.
	(make_exit_edges): Handle GOTO_EXPR, CALL_EXPR and RETURN_EXPR.
	(tree_delete_bb): Call first_stmt and last_stmt.
	(block_invalidates_loop): Call last_stmt.
	(replace_expr_in_tree): Don't dump line number information.
	(find_expr_in_tree_helper): Don't call statement_code_p.
	(tree_dump_bb): Call get_lineno.
	(tree_cfg2dot): Ditto.
	(successor_block): Use a gimple_stmt_iterator to find the first
	executable block after the current one.
	(is_ctrl_stmt): Handle COND_EXPR, LOOP_EXPR and SWITCH_EXPR.
	(is_ctrl_altering_stmt): Call flags_from_decl_or_type to discover
	non-return functions.
	(is_loop_stmt): Handle LOOP_EXPR.
	(is_computed_goto): Handle GOTO_EXPR.
	(stmt_starts_bb_p): Handle CASE_LABEL_EXPR, LABEL_EXPR, RETURN_EXPR
	and BIND_EXPR.
	(first_exec_stmt): Use a gimple_stmt_iterator to traverse the
	statements.
	(first_stmt): New function.
	(last_stmt): New function.

	* tree-dfa.c: Don't include c-common.h, c-tree.h and
	tree-optimize.h.  Include diagnostic.h.
	(tree_find_refs): Disable.
	(find_refs_in_stmt): Disable.
	(find_refs_in_expr): Don't call prep_stmt.
	(tree_ann): Don't annotate empty_stmt_node.
	(find_declaration): Remove.  Update all users.
	(dump_ref): Call get_lineno.
	(is_visible_to): Always return true.

	* tree-flow.h: Include tree-flow-inline.h, basic-block.h and
	tree-simple.h.
	(tree_ann_d): Remove compound_parent field.
	(set_bb_for_stmt): Declare extern.
	(compound_parent, set_compound_parent, struct for_header_blocks,
	union header_blocks, prev_chain_p, set_prev_chain_p, binding_scope,
	set_binding_scope, loop_hdr, for_init_bb, set_for_init_bb,
	for_cond_bb, set_for_cond_bb, for_expr_bb, set_for_expr_bb,
	end_while_bb, set_end_while_bb, do_cond_bb, set_cond_bb,
	stmt_ends_bb_p, loop_parent, latch_block, switch_parent,
	first_exec_stmt, last_exec_stmt, is_exec_stmt,
	is_statement_expression, first_non_decl_stmt, first_decl_stmt,
	first_non_label_in_bb, tree_split_bb, find_declaration): Remove.
	Update all users.
	(get_lineno): New function.
	(struct bb_ann_def): Rename field parent to parent_block.  Update
	all users.
	Remove fields prev_chain_p, loop_hdr and binding_scope.  Update all
	users.
	(parent_block): Rename from bb_parent.
	(set_parent_block): Rename from set_bb_parent.
	(prev_chain_p): Remove
	(bb_empty_p): Return true if block only contains empty_stmt_node.
	(gsi_step_bb): New function.
	(gsi_start_bb): New function.
	(gsi_insert_before, gsi_insert_after, gsi_delete, gsi_replace):
	Declare.
	(insert_stmt_before): Rename from insert_stmt_tree_before.
	(insert_stmt_after): Rename from insert_stmt_tree_after.
	(first_stmt): Declare.
	(last_stmt): Declare.
	(tree_perform_ssapre, tree_ssa_ccp,
	tree_ssa_eliminate_dead_code): Move declaration from tree-optimize.h.
	* tree-flow-inline.h: New file for all the inline functions
	declared in tree-flow.h

	* tree-optimize.c: Don't include tree-optimize.h, c-common.h and
	c-tree.h.
	(optimize_function_tree): Disable call to double_chain_stmts.
	Call init_flow.
	Call tree_find_basic_blocks.
	Disable calls to tree_build_ssa and optimizers.
	(build_tree_ssa): Remove.  Update all users.
	* tree-optimize.h: Remove.
	* tree-ssa-ccp.c: Don't include tree-optimize.h
	* tree-ssa-dce.c: Don't include tree-optimize.h.
	Include diagnostic.h
	* tree-ssa-pre.c: Don't include tree-optimize.h.
	(requires_edge_placement): Disable unused function.
	(set_need_repair): Disable unused function.
	(finalize_1): Disable calls to insert_stmt_tree_before and
	insert_stmt_tree_after.
	(repair_injury): Ditto.
	(code_motion): Ditto.
	* tree-ssa.c: Don't include tree-optimize.h.
	(insert_phi_nodes_for): Remove unused variable.
	(add_phi_node): Don't call statement_code_p.
	* cp/optimize.c: Don't include tree-optimize.h
	* tree-alias-common.c: Don't include tree-optimize.h.
	(find_func_decls): Disable.
	(display_points_to_set): Disable.
	* tree-alias-steen.c: Don't include tree-optimize.h.

2002-10-04  Jason Merrill  <jason@redhat.com>

	* gimplify.c (declare_tmp_vars): Don't add temps to block vars.
	* tree-inline.c (remap_decls): Split out from remap_block.
	(copy_bind_expr): Remap BIND_EXPR_VARS separately from block vars.

	* c-simplify.c (simplify_expr_stmt): Call set_file_and_line_for_stmt.

	* gimplify.c: New file.
	(push_gimplify_context, pop_gimplify_context): New fns.
	(gimple_push_bind_expr, gimple_pop_bind_expr): New fns.
	(simplify_bind_expr): Use them.
	(gimple_current_bind_expr, gimple_add_tmp_var): New fn.
	(foreach_stmt): Recurse if necessary.
	(various): Use generic interfaces instead of c-specific ones.
	* c-simplify.c: Move language-independent code to gimplify.c.
	(simplify_c_loop): Use add_tree instead of add_stmt_to_compound.
	(various): Use new *_bind_expr interfaces.
	* Makefile.in (C_AND_OBJC_OBJS): Add gimplify.o.
	(gimplify.o): New rule.

	* c-decl.c (c_expand_body): Dump trees here.
	* c-simplify.c (simplify_function_body): Not here.

2002-10-03  Frank Ch. Eigler  <fche@redhat.com>

	* tree-mudflap.c (mf_offset_expr_of_array_ref): Don't emit
	intermediate variables for constant index values.
	(mx_xfn_indirect_ref): For constant valid index values and
	known valid array sizes, omit bounds checks.

2002-10-03  Jason Merrill  <jason@ariel.home>

	* c-simplify.c (simplify_bind_expr): Don't clear TREE_SIDE_EFFECTS
	if we have a block.

	* c-simplify.c (simplify_expr) [TRY_FINALLY_EXPR]: New case.

	* tree-inline.c (copy_body_r) [RETURN_EXPR]: Don't make an extra
	copy of the MODIFY_EXPR.  Mark the return label used.
	(expand_call_inline): Don't push/pop_srcloc.  Only emit the return
	label if it was used.

	* tree-simple.c (right_assocify_expr): Split out from
	rationalize_compound_expr.  Don't move non-matching op0's.
	* tree-simple.h: Declare it.
	* c-simplify.c (simplify_boolean_expr): Call it.
	(simplify_cond_expr): Reorganize.  Optimize if (a&&b).

	* c-simplify.c (wrap_with_wfl): Drop special loop handling.
	(simplify_c_loop): Wrap loop contents in wfls.

	* c-simplify.c (STRIP_WFL): Move...
	* tree.h: ...here.

	* c-common.c (c_walk_subtrees): Don't walk TREE_CHAIN.
	* tree-inline.c (walk_tree): Call langhook walk_subtrees first.
	For expressions, walk TREE_CHAIN if it matters.

2002-10-01  Frank Ch. Eigler  <fche@redhat.com>

	* builtins.c (expand_builtin_alloca): Disable if -fmudflap.
	* tree-mudflap.c (mudflap_enqueue_decl): Tweak logic to include
	more globals.
	(mx_xfn_indirect_ref): Handle bitfield COMPONENT_REFs; instrument
	BIT_FIELD_REF/INDIRECT_REFs.

2002-10-01  Jason Merrill  <jason@redhat.com>

	* c-decl.c (poplevel): Only add undeclared labels to the toplevel
	block.
	* c-parse.in (label_decl): Push the declared label.

	* c-decl.c (c_expand_body): If we've been simplified, use
	expand_expr_stmt_value instead.

	* c-decl.c (c_expand_decl): Rename from c_expand_decl_stmt.
	Handle all C-specific expansion semantics.
	* c-tree.h: Change prototype.
	* langhooks.h (struct lang_hooks): Add expand_decl hook.
	* langhooks.c (lhd_expand_decl): Default version.
	* langhooks-def.h (LANG_HOOKS_EXPAND_DECL): Provide default.
	* c-lang.c (LANG_HOOKS_EXPAND_DECL): Define.
	* c-semantics.c (lang_expand_decl_stmt): Remove.
	(genrtl_decl_stmt): Use lang_hooks.expand_decl.
	* Makefile.in (c-semantics.o): Depend on langhooks.h.
	* c-objc-common.c (c_objc_common_init): Don't set
	lang_expand_decl_stmt.

	* c-common.def (ASM_STMT): Only 4 operands.
	* c-common.h (ASM_CV_QUAL): Remove.
	(genrtl_asm_stmt): Adjust prototype.
	* c-typeck.c (build_asm_stmt): Adjust.
	* c-semantics.c (genrtl_asm_stmt): Change cv_qualifier parm to
	volatile_p.
	(expand_stmt): Adjust.

	* c-common.h (SWITCH_COND, SWITCH_BODY, CASE_LOW, CASE_HIGH,
	CASE_LABEL_DECL, GOTO_DESTINATION, ASM_STRING, ASM_OUTPUTS,
	ASM_INPUTS, ASM_CLOBBERS, ASM_VOLATILE_P, ASM_INPUT_P): Move to tree.h.

	* c-pretty-print.c (newline_and_indent): New fn.
	(dump_c_tree, dump_c_node): Make spc a plain int.
	(dump_c_node): Use output_add_identifier.
	Reorganize for bnw-simple; indent in the enclosing node rather
	than the subexpression.
	[FUNCTION_DECL]: Just print the name for now.
	[COMPOUND_EXPR, COND_EXPR]: Handle use as statements.
	[BIND_EXPR, GOTO_EXPR, EXIT_EXPR, LOOP_EXPR, LABELED_BLOCK_EXPR,
	EXIT_BLOCK_EXPR, RETURN_EXPR, SWITCH_EXPR, ASM_EXPR,
	CASE_LABEL_EXPR]: Implement.
	(print_declaration): Print 'static'.
	* c-tree.h: Move c-pretty-print decls to diagnostic.h.

	* expr.c (store_field): Don't always pass want_value==0 to store_expr.

	* expr.c (expand_expr) [EXIT_EXPR]: Handle EXIT_EXPR_IS_LOOP_COND.

	* expr.c (expand_expr) [LOOP_EXPR]: Pass exit_flag==0 to
	exand_start_loop.
	[BIND_EXPR]: Adjust for functions-as-trees mode.
	[COMPOUND_EXPR]: Avoid recursion if possible.
	[SWITCH_EXPR, LABEL_EXPR]: Move handling from java/expr.c.
	[CASE_LABEL_EXPR, ASM_EXPR]: New handling.

	* tree.h (struct tree_common): Add visited flag.
	(TREE_VISITED): New macro.
	* tree.c (copy_node): Clear TREE_VISITED.
	* print-tree.c (print_node): Print visted.

	* stmt.c (expand_asm_expr): New fn.

	* tree.c (build1): Always set TREE_SIDE_EFFECTS for 's' codes.

	* tree.h (enum tree_index): Add TI_EMPTY_STMT.
	(empty_stmt_node): New macro.
	* tree.c (build_common_tree_nodes_2): Initialize it.

	* tree.def: Change some codes from 'e' to 's'.
	(CASE_LABEL_EXPR, ASM_EXPR): New codes.

	* tree.def (SWITCH_EXPR): Now has three operands.

	* tree-inline.c: Retarget to generic trees.  FIXME FIXME.
	* old-tree-inline.c: Old C/Java-specific inliner.
	* Makefile.in (old-tree-inline.o): New rule.
	* c-common.c (c_walk_subtrees): New fn.
	(c_tree_chain_matters_p): New fn.
	* c-lang.c: Use them for LANG_HOOKS_TREE_INLINING_WALK_SUBTREES
	and LANG_HOOKS_TREE_INLINING_TREE_CHAIN_MATTERS_P.
	* c-common.h: Declare them.
	(DECL_NUM_STMTS): Move to tree.h.
	* c-decl.c (finish_function): Simplify the function trees.
	* c-objc-common.c (inline_forbidden_p): Look inside BIND_EXPRs
	for nested functions.  Don't inline a function with _STMT trees.

	* basic-block.h: Include hard-reg-set.h.

	* c-decl.c (start_function): Don't call make_decl_rtl.
	(c_expand_body): Call it here instead.

	* Makefile.in (explow.o): Depend on langhooks.h.

	* unroll.c (copy_loop_body): Don't copy NOTE_INSN_DELETED_LABELs
	between copy_notes_from and loop_end, either.

2002-09-30  Daniel Berlin  <dberlin@dberlin.org>

	* tree-ssa-pre.c (repair_injury): Start work on updating SSA
	representation for strength reduction injuries.
	Print a new line after outputting tree node in debug statements.
	Fix strength reduction of a candidate with two variables (IE a *
	c).
	Put the repair after the injuring statement, not at the end of the
	block.
	Break the RHS use lookup if it's defined by a phi.
	(calculate_increment): Ditto on node printing.
	(code_motion): Ditto on updating SSA rep for strength reduction
	injuries.
	(find_rhs_use_for_var): Rewrite to use maybe_find_rhs_use_for_var.
	(maybe_find_rhs_use_for_var): Rename from find_rhs_use_for_var,
	don't abort, return NULL.
	(set_var_phis): Simplify break condition.
	Make sure RHS *has* a use before we go and get it.
	(rename2): Ditto on RHS checking.
	When looking up injuring defs, break on phis.
	(phi_opnd_from_res): Ditto.
	(defs_y_dom_x): Ditto.
	(TODO List): Add new TODO to fix the remapping crud.

2002-09-27  Daniel Berlin  <dberlin@dberlin.org>

	* tree-ssa-pre.c (tree_perform_ssapre): Move insertion into
	splay tree inside the is_simple_modify_expr block, to prevent
	tree check failure.

2002-09-26  Daniel Berlin  <dberlin@dberlin.org>

	* tree-ssa-pre.c (update_phis_in_list): New function.
	(update_ssa_for_new_use): New function.
	(code_motion): Start working on code to update SSA representation.
	(find_reaching_def_of_var): New function.

2002-09-25  Steven Bosscher  <s.bosscher@student.tudelft.nl>

	* Makefile.in (tree): Add dependency on c-tree.h
	* tree-optimize.c: Include c-tree.h
	(optimize_function_tree): React to -fdump-tree-optimized.

2002-09-25  Daniel Berlin  <dberlin@dberlin.org>

	* tree-dfa.c (add_list_to_ref_list_end): New function.
	(add_list_to_ref_list_begin): Ditto.
	(find_list_node): Handle searching in empty lists.
	(find_refs_in_stmt): De-staticify.

	* tree-flow.h (add_list_to_ref_list_end): New declaration.
	(add_list_to_ref_list_begin): Ditto.
	(find_refs_in_stmt): Add prototype.

2002-09-25  Diego Novillo  <dnovillo@redhat.com>

	* Makefile.in (tree-dfa.o): Depend on flags.h
	* tree-cfg.c (tree_dump_cfg): Alter output format slightly.
	(block_invalidates_loop): Look for clobbering definitions of
	GLOBAL_VARIABLE.
	* tree-simple.c (get_base_symbol): Handle EXPR_WITH_FILE_LOCATION
	nodes.
	* tree-optimize.c (init_tree_flow): Remove.  Update all users.
	(build_tree_ssa): Don't call tree_find_refs.
	Don't call tree_compute_rdefs.

	* tree-dfa.c: Include flags.h
	(dump_file): Remove.
	(dump_flags): Remove.
	(pointer_refs): Remove.
	(struct dfa_stats_d): Add fields max_num_phi_args, num_may_alias,
	max_num_may_alias, num_alias_imm_rdefs and max_num_alias_imm_rdefs.
	Remove field num_fcalls.
	(dfa_counts): Declare.
	(tree_find_refs): Declare.
	(tree_ssa_dump_file): Declare.
	(tree_ssa_dump_flags): Declare.
	(dump_if_different): New function.
	(add_default_defs): Remove.  Update all users.
	(add_call_site_clobbers): Remove.  Update all users.
	(add_ptr_may_refs): Remove.  Update all users.
	(compute_may_aliases): New function.
	(find_may_aliases_for): New function.
	(add_may_alias): New function.
	(may_alias_p): New function.
	(is_visible_to): New function.
	(get_alias_index): New function.
	(call_sites): Remove.  Update all users.
	(global_var): Declare.
	(E_FCALL): Remove.  Adjust other constants.
	(M_INDIRECT): Remove.  Update all users.
	(M_RELOCATE): Declare.
	(tree_find_refs): Move debugging dumps to tree_build_ssa.
	Move initialization code to init_tree_ssa.
	Call compute_may_aliases.
	(find_refs_in_expr): For INDIRECT_REF nodes create a reference to
	the canonical INDIRECT_REF node associated with the pointer symbol.
	Given a pointer p, clobber the canonical INDIRECT_REF of p after
	creating a V_DEF for p.
	For CALL_EXPR nodes, if the called function is not pure nor
	const, create a use and a clobbering definition to GLOBAL_VAR.
	(create_ref): Allow INDIRECT_REF variables.
	(add_phi_arg): Keep track of number of PHI arguments created.
	(function_may_recurse_p): Look for clobbering definitions to
	GLOBAL_VAR.
	(get_fcalls): Remove unused function.
	(is_pure_fcall): Remove unused function.
	(fcall_takes_ref_args): Remove unused function.
	(find_declaration): Stop iterating at ENTRY_BLOCK_PTR.
	(debug_variable): New function.
	(dump_variable): New function.
	(dump_referenced_vars): Call it.
	(dump_phi_args): Don't dump NULL arguments.
	(PERCENT): Define.
	(dump_dfa_stats): Re-format output.
	Add new counters.
	Call dump_if_different.
	(collect_dfa_stats): Also recurse into GLOBAL_VAR.
	(collect_dfa_stats_r): Collect may-alias information.
	(count_tree_refs): Collect information about def-def links for
	aliases.
	Keep track of maximum values for number of PHI arguments, aliases
	and def-def links.
	(ref_type_name): Handle M_RELOCATE.
	(validate_ref_type): Ditto.

	* tree-ssa.c: Add more documentation.
	(tree_ssa_dump_file): Rename from dump_file.  Declare extern.
	(tree_ssa_dump_flags): Rename from dump_flags.  Declare extern.
	(added): New local varray.
	(in_work): New local varray.
	(work_stack): New local varray.
	(dfa_counts): Declare.
	(insert_phi_nodes_for): New local function.
	(add_phi_node): New local function.
	(set_ssa_links): New local function.
	(set_alias_imm_reaching_def): New local function.
	(create_default_def): New local function.
	(init_tree_ssa): New local function.
	(tree_find_refs): Relocate declaration from tree-flow.h
	(tree_build_ssa): Call init_tree_ssa.
	Call tree_find_refs.
	Process all SSA-related dump options.
	(insert_phi_nodes): Rename from insert_phi_terms.  Update all
	users.
	Call insert_phi_nodes_for.
	(build_fud_chains): Add more documentation.
	Initialize save_chain to 0.
	(search_fud_chains): Add more documentation.
	Call set_ssa_links.
	Call create_default_def.
	(tree_compute_rdefs): Initialize array marked to 0.
	(follow_chain): Follow def-def chains for non-killing definitions
	for aliases.
	(dump_reaching_defs): Call dump_variable.

	* tree-flow.h (E_FCALL): Remove.  Update all users.
	(M_INDIRECT): Remove.  Update all users.
	(M_RELOCATE): Declare.
	(struct var_ref): Add field alias_imm_rdefs.
	(alias_imm_reaching_def): New inline function.
	(struct tree_ann_d): Add field indirect_var.
	Add field may_aliases.
	(enum tree_flags): Relocate.
	(indirect_var): New inline function.
	(set_indirect_var): New inline function.
	(may_alias): New inline function.
	(num_may_alias): New inline function.
	(struct dfa_counts_d): Declare.
	(global_var): Declare.
	(FCALL_NON_PURE, FCALL_PURE, FCALL_BUILT_IN): Remove.
	(tree_find_refs): Move to tree-ssa.c.
	(dump_variable): Declare.
	(debug_variable): Declare.
	(get_fcalls): Remove.
	(is_pure_fcall): Remove.
	(fcall_takes_ref_args): Remove.
	(ref_defines): Declare.
	(is_killing_def): Declare.
	(get_alias_index): Declare.
	(delete_tree_ssa): Rename from delete_ssa.  Update all users.
	(set_currdef_for): Allow INDIRECT_REF nodes.
	(bb_annotation): Don't create a new one if the block didn't have an
	annotation already.

	* tree-ssa-ccp.c (substitute_and_fold): Rename from
	ssa_ccp_substitute_constants.  Update all users.
	Call replace_uses_in.
	(replace_uses_in): New local function.
	(evaluate_expr): Call it.
	(initialize): Call get_base_symbol.

	* tree-ssa-dce.c (tree_ssa_eliminate_dead_code): Don't handle
	E_FCALL.

2002-09-22  Diego Novillo  <dnovillo@redhat.com>

	* Makefile.in (tree-dfa.o): Depend on hashtab.h.
	* c-simplify.c (get_name): Declare extern.
	* tree-cfg.c (tree_dump_cfg): Call it.
	(tree_cfg2dot): Call it.
	* tree-ssa-ccp.c (tree_ssa_ccp): Call get_name.
	* tree-ssa-dce.c (tree_ssa_eliminate_dead_code): Call get_name.
	* tree-ssa-pre.c (tree_perform_ssapre): Call get_name.
	* tree-ssa.c (analyze_rdefs): Call get_name.
	(dump_reaching_defs): Call get_name.
	(dump_tree_ssa): Call get_name.
	* tree.h (get_name): Declare.

	* tree-dfa.c: Include "hashtab.h"
	(struct dfa_stats_d): New.
	(collect_dfa_stats): New local function.
	(collect_dfa_stats_r): New local function.
	(count_tree_refs): New local function.
	(count_ref_list_nodes): New local function.
	(tree_find_refs): Call dump_begin on entry to the function.
	(dump_referenced_vars): Call get_name.
	(SCALE): Declare.
	(LABEL): Declare.
	(dump_dfa_stats): New function.
	(debug_dfa_stats): New function.
	* tree-dump.c (struct dump_option_value_info): Add entry for TDF_STATS.
	* tree-flow.h (has_annotation): Remove.  Update all users.
	(dump_dfa_stats): Declare.
	(debug_dfa_stats): Declare.
	(tree_annotation): Don't create one if the tree doesn't have one
	already.  Update all users to new semantics.
	* tree-ssa-dce.c (print_stats): Dump if dump_flags has TDF_STATS bit
	set.
	* tree-ssa.c (tree_build_ssa): Open dump file on entry.
	Call dump_dfa_stats if dump_flags has TDF_STATS bit set.
	Call dump_tree_ssa if dump_flags has TDF_DETAILS bit set.
	* tree.h (TDF_STATS): Define.
	* doc/invoke.texi: Document 'stats' flag for -fdump-tree.

	* tree-dfa.c (next_tree_ref_id): Change type to unsigned long.
	Update all users.
	tree-flow.h (tree_ref_common): Change type of field 'id' to
	unsigned long.  Update all users.
	(ref_id): Change return type to unsigned long.  Update all users.

2002-09-21  Daniel Berlin  <dberlin@dberlin.org>

	* tree-ssa-pre.c (struct expr_info): Add repaired member.
	(repair_injury): Track which injuries we repaired, so we don't
	repair them > 1 time.

2002-09-20  Diego Novillo  <dnovillo@redhat.com>

	* c-pretty-print.c (dump_c_node): Fix call to REAL_VALUE_TO_DECIMAL.

2002-09-20  Diego Novillo  <dnovillo@redhat.com>

	* tree-dfa.c (find_refs_in_stmt): Fix botched call to
	clobber_vars_r with CLEANUP_STMT nodes.

2002-09-20  Diego Novillo  <dnovillo@redhat.com>

	* toplev.c (flag_tree_ssa): Remove.  Update all users.

2002-09-20  Frank Ch. Eigler  <fche@redhat.com>

	* gcc.c (cc1_options): Make -fmudflap imply -fno-merge-constants.
	* varasm.c (categorize_decl_for_section): Likewise, for strings.
	* tree-mudflap.c (mudflap_enqueue_decl): Don't be interested
	in !TREE_USED decls.  Fix minor type warning.
	(mf_offset_expr_of_array_ref): Create explicit temporary variables
	for array index expressions instead of SAVE_EXPRs.  Update callers.
	(mf_build_check_statement_for): Insert temp variables.
	(mx_xfn_indirect_ref): Correct recursion-protection checking
	sequence.  Tweak array check-base calculation back to "&array[0]".
	(*): Use build_function_type_list instead of build_function_type.
	(mx_external_ref): Remove unused parameter.  Update callers.

2002-09-19  Diego Novillo  <dnovillo@redhat.com>

	* c-decl.c (c_expand_body): Invoke tree optimizers with -O1 and
	above.
	* flags.h (flag_tree_ssa): Remove.
	* tree-cfg.c (find_expr_in_tree_helper): Change last argument type
	to int.
	* tree-dfa.c (create_ref): Ditto.
	* tree-flow.h (num_referenced_vars): Change type to unsigned long.
	* doc/invoke.texi (-ftree-ssa): Remove.
	(-fdump-tree-{pre,ccp,dce}): Add to the summary section.
	(-fdump-tree-xxx-details): Update documentation.
	(-fdump-tree-ccp): Document.
	(-fdump-tree-simple): Move elsewhere.

2002-09-19  Richard Henderson  <rth@redhat.com>

	* function.c (insns_for_mem_hash): Cast to size_t first.
	* tree-dfa.c (num_referenced_vars): Unsigned long, not size_t.
	(dump_referenced_vars): Use %lu for it.
	(dump_ref): Use HOST_WIDE_INT_PRINT_DEC.
	* tree-nomudflap.c (mudflap_c_function): Use ATTRIBUTE_UNUSED.
	(mudflap_enqueue_decl, mudflap_enqueue_constant): Likewise.
	* tree-ssa-pre.c (compute_idfs): Cast to size_t first.

	* tree-optimize.c (optimize_function_tree): Fix missed renamings.
	* tree-ssa-pre.c (tree_perform_ssapre): Likewise.

2002-09-19  Jeff Law <law@redhat.com>

	* tree-dfa.c (find_refs_in_stmt): Search for references in the call
	address of a CALL_EXPR.

2002-09-19  Daniel Berlin <dberlin@dberlin.org>

	* toplev.c: tree-ssa-* -> tree-*.

	* doc/invoke.texi: Ditto.

2002-09-19  Daniel Berlin <dberlin@dberlin.org>

	* flags.h: flag_tree_ssa_* -> flag_tree_*.

	* toplev.c: Ditto.

	* tree-optimize.c: Ditto.

	* tree-dump.c: dump-tree-ssa-* -> dump-tree-*.
	TDI_ssa_* -> TDI_*.

	* tree.h: Ditto

	* tree-ssa-dce.c (tree_ssa_eliminate_dead_code): Fix dump handling.

2002-09-18  Daniel Berlin <dberlin@dberlin.org>

	* tree-dump.c (dump_files): Use dump-tree-ssa-??? for the option names
	and "ssa-???" for the dump files.

	* tree.h: TDI_ccp and TDI_dce -> TDI_ssa_ccp and TDI_ssa_dce.

	* tree-ssa-ccp.c: TDI_ccp->TDI_ssa_ccp.

2002-09-18  Daniel Berlin <dberlin@dberlin.org>

	* tree-dump.c: Fix order of dump files

2002-09-17  Daniel Berlin <dberlin@dberlin.org>

	* tree-ssa-pre.c: Remove a lot of finding refs in statements junk.
	Start on strength reduction.
	Only generate simple statements.
	Remove EXPR* macros in favor of inline functions.
	Update comparisons and sets to 1 and 0 to true and false where
	approriate.
	(toplevel): Add DEBUGGING_STRRED define (temporary, for
	implementation debugging, *not* useful as a dump option).
	Add TODO notes.
	Add global avdefs, orig_expr_map, need_repair_map,
	strred_candidate.
	(set_var_phis): Add struct expr_info * argument.
	Update to handle injuring definitions.
	(defs_y_dom_x): Ditto.
	(phi_opnd_from_res): Ditto.
	(phi_for_operand): Remove extra \.
	(find_tree_ref_for_var): Renamed to find_use_for_var. Update all
	callers.
	Use orig_expr_map to lookup original expression, remove statement
	searching gunk.
	(find_rhs_use_for_var): New function.
	(is_strred_cand): New function.
	(is_injuring_def): New function.
	(calculate_increment): New function.
	(repair_injury): New function.
	(set_need_repair): New function.
	(struct expr_info): Add strred_cand member.
	(rename_2): Update to handle injuring definitions.
	(expr_phi_insertion): Ditto.
	(code_motion): Update to repair injuries.
	Only insert SIMPLE statements.
	Free avdefs here now.
	(finalize_1): Don't free avdefs anymore here.
	(tree_perform_ssapre): Record original expresion for
	find_use_for_var's benefit.
	Determine strength reduction candidates.

	* tree-flow.h: Remove EXPR* macros in favor of inline functions.
	Remove E_INJ.

	* tree-dfa.c: Change EXPR* macros to the new functions.
	Remove E_INJ.

2002-09-18  Diego Novillo  <dnovillo@redhat.com>

	* tree-dfa.c (M_ADDRESSOF): Define.
	(find_refs_in_expr): Create addressof-use references for ADDR_EXPR
	nodes.
	Don't create references for FUNCTION_DECL nodes.
	(ref_type_name): Handle M_ADDRESSOF.
	(validate_ref_type): Ditto.
	(clobber_vars_r): Don't clobber FUNCTION_DECL nodes.
	* tree-flow.h (M_ADDRESSOF): Declare.

2002-09-17  Diego Novillo  <dnovillo@redhat.com>

	* doc/invoke.texi: Document -ftree-ssa-dce and -fdump-tree-dce.
	* cp/Make-lang.in (CXX_C_OBJS): Add tree-ssa-dce.o.

2002-09-17  Ben Elliston  <bje@redhat.com>

	* Makefile.in (C_AND_OBJC_OBJS): Add tree-ssa-dce.o.
	tree-ssa-dce.o): New target.
	* tree-ssa-dce.c: New file.
	* flags.h (flag_tree_ssa_dce): Declare flag.
	* tree.h (tree_dump_index): Add TDI_dce.
	* toplev.c (flag_tree_ssa_dce): New flag.
	(f_options): Add "dump-tree-all-ssa" option.
	* tree-flow.h (enum tree_flags): Add TF_NECESSARY.
	* tree-dump.c (dump_files): Add dump-tree-dce option.
	(dump_enable_all_ssa): Enable it when dumping all.
	* tree-optimize.h (tree_ssa_eliminate_dead_code): Declare.
	* tree-optimize.c (optimize_function_tree): Invoke the
	optimisation pass if flag_tree_ssa_dce is set.

2002-09-17  Diego Novillo  <dnovillo@redhat.com>

	* Makefile.in (tree-ssa.o): Add dependency on c-tree.h
	* c-simplify.c (mark_not_simple_r): Don't mark IDENTIFIER_NODEs.
	* tree-dfa.c (function_may_recurse_p): Fix comment.
	(dump_ref): Don't dump immediate uses for PHI nodes more than once.
	(dump_referenced_vars): Unparse the name of the variable.
	* tree-flow.h (dump_tree_ssa): Declare.
	(debug_tree_ssa): Declare.
	(replace_ref_operand_with): Check if OPERAND_P is NULL.
	(restore_ref_operand): Ditto.
	(tree_annotation): Check that constants, types and IDENTIFIER_NODEs
	are not being annotated.
	* tree-ssa.c: Include c-tree.h.
	(dump_reaching_defs): Unparse the variable name.
	(dump_tree_ssa): New function.
	(tree_build_ssa): Call it.
	(debug_tree_ssa): New function.

2002-09-14  Steven Bosscher <s.bosscher@student.tudelft.nl>

	* dwarf2out.c (is_fortran): Return true for
	DW_LANG_Fortran95.
	(gen_compile_unit_die): Return DW_LANG_Fortran95 if
	language is "GNU F95".

2002-09-13  Daniel Berlin  <dberlin@dberlin.org>

	* tree-dump.c (dump_switch_p): Get longest match, not first one.

	* tree.h: Put TDI_* back in order, now that we do longest match
	matching.

2002-09-13  Diego Novillo  <dnovillo@redhat.com>

	* tree-dfa.c (add_call_site_clobbers): Call decl_function_context
	instead of DECL_CONTEXT.
	* tree-ssa-ccp.c (initialize): Ditto.
	* tree-ssa.c (analyze_rdefs): Ditto.

2002-09-11  Diego Novillo  <dnovillo@redhat.com>

	* tree-dfa.c (find_refs_in_stmt): Call clobber_vars_r to clobber
	CLEANUP_STMT nodes.
	(create_ref): Only add _DECL nodes to the list of referenced
	variables.
	(clobber_vars_r): Create a may-use reference prior to clobbering
	the variable.
	(add_call_site_clobbers): Ditto.
	(add_ptr_may_refs): Move call to find_list_node where it's actually
	needed.
	* tree-flow.h: Update documentation on M_CLOBBER.

2002-09-10  Daniel Berlin  <dberlin@dberlin.org>

	* tree-ssa-pre.c (defs_match_p): Fix typo ( | -> || ).

2002-09-10  Diego Novillo  <dnovillo@redhat.com>

	* tree-dfa.c (V_PHI_ARG): Remove.  Adjust related constants.
	Update all users.
	(add_ref_to_list_after): Don't allocate memory for the
	node when adding to the beginning or the end of the list.
	(add_phi_arg): Don't call create_ref to add a new argument.
	(debug_phi_args): New function.
	(dump_phi_args): New function.
	(dump_ref): Call it.
	(dump_referenced_vars): Use 'file' instead of 'dump_file'.

	* tree-flow.h (V_PHI_ARG): Remove.  Update all users.
	(struct var_ref): Move fields used in distinct
	reference types to other structures.  Update all users.
	(struct var_def): New.
	(struct var_phi): New.
	(struct var_use): New.
	(union tree_ref_d): Add members vdef, vphi, vuse and vphi_arg.
	Update all users.
	(save_chain): Remove.  Update all users.
	(set_save_chain): Remove.  Update all users.
	(marked_with): Remove.  Update all users.
	(mark_def_with): Remove.  Update all users.
	(dump_reaching_defs): Declare.
	(debug_reaching_defs): Declare.

	(struct phi_node_arg_d): New structure.
	(phi_node_arg): New type.
	(phi_arg): Change return type to phi_node_arg.
	(imm_reaching_def_edge): Rename to phi_arg_edge.
	(set_imm_reaching_def_edge): Rename to set_phi_arg_edge.
	(phi_arg_def): New inline function.
	(set_phi_arg_def): New inline function.
	(debug_phi_args): Declare.
	(dump_phi_args): Declare.

	* tree-ssa-ccp.c: Use new phi_node_arg type when examining PHI node
	arguments.

	* tree-ssa-pre.c: Ditto.

	* tree-ssa.c (save_chain): New local variable.
	(build_fud_chains, search_fud_chains): Use it.
	(marked): New local variable.
	(tree_compute_rdefs, follow_chain): Use it.
	(dump_reaching_defs): New function.
	(debug_reaching_defs): New function.

2002-09-09  Daniel Berlin <dberlin@dberlin.org>

	* Makefile.in (tree-alias-steen.o): Remove gt-tree-alias-steen.h
	(tree-alias-common.o): Add dependency on c-common.h

	* tree-ssa-pre.c: Fix PRE now that V_USE's expr's are the entire
	assignment, rather than just the right hand side.
	Stop generating our own call clobbers

	* tree-dfa.c (create_ref): Make sure var is not null before checking
	TREE_THIS_VOLATILE.

	* tree.h: Reorder TDI_* so ssapre comes before ssa.

	* tree-dump.c: dump-tree-ssapre has to come before dump-tree-ssa
	in the table, or else it'll never match.

2002-09-09  Frank Ch. Eigler  <fche@redhat.com>

	* tree-mudflap.c (mf_offset_expr_of_array_ref): Fold constants along
	the way.
	(mf_build_check_statement_for): Ditto.  Flag new COMPONENT_REFs.
	(mx_xfn_indirect_ref): Instrument COMPONENT_REFs specially.  Tweak
	ARRAY_REF instrumentation to reduce need of copying and recursion.

2002-09-09  Diego Novillo  <dnovillo@redhat.com>

	* tree-ssa.c (analyze_rdefs): Disable uninitialized variable warnings.

2002-09-09  Diego Novillo  <dnovillo@redhat.com>

	* Makefile.in (tree-ssa.o): Add dependency on tree-simple.h.
	(tree-dfa.o): Add dependency on tree-simple.h and tree-inline.h.
	(tree-alias-steen.o): Add dependency on c-common.h.
	(tree-optimize.o): Add dependency on c-common.h.

	* c-simplify.c (deep_copy_node): Call walk_tree with mostly_copy_tree_r.
	(mostly_copy_tree_r): Also copy flags from original tree.
	(mark_not_simple_r): Call set_tree_flag.

	* tree-alias-steen.c: Include c-common.h.

	* tree-cfg.c (map_stmt_to_bb): Remove.
	(block_invalidates_loop): Change return type to bool.
	(create_loop_hdr): New function.
	(create_bb): Call it.
	(create_bb_ann): Return newly created annotation object.
	(remove_bb_ann): Nullify loop_hdr annotation, if there is one.
	(tree_delete_bb): Only remove basic block annotation from
	executables statements.
	(is_computed_goto): New function.

	* tree-dfa.c (pointer_refs): New file local variable.
	(call_sites): New global variable.
	(V_DEF, V_USE, V_PHI, V_PHI_ARG, E_FCALL, E_PHI, E_USE, E_KILL,
	E_INJ): New global constants.
	(M_DEFAULT, M_CLOBBER, M_MAY, M_PARTIAL, M_INITIAL, M_INDIRECT,
	M_VOLATILE): New global constants.
	(num_referenced_vars): New global variable.
	(referenced_vars): Rename from referenced_symbols.  Update all
	users.
	(clobber_vars_r): New function.
	(add_default_defs): New function.
	(add_call_site_clobbers): New function.
	(add_ptr_may_refs): New function.
	(add_phi_arg): New function.
	(find_list_node): New function.
	(remove_ref_from_list): Call it.
	(add_ref_to_list_after): New function.
	(is_pure_fcall): New function.
	(fcall_takes_ref_args): New function.
	(dump_referenced_vars): New function.
	(debug_referenced_vars): New function.
	(ref_type_name): New function.
	(validate_ref_type): New function.
	(debug_phi_args): Remove.
	(dump_phi_args): Remove.
	(add_referenced_var): Rename from add_ref_symbol.  Update all
	users.
	(dump_ref): Rename from dump_varref.  Update all users.
	(debug_ref): Rename from debug_varref.  Update all users.
	(dump_ref_list): Rename from dump_varref_list.  Update all users.
	(dump_ref_array): Rename from dump_varref_array.  Update all users.
	(next_tree_ref_id): Rename from next_varref_id.  Update all users.

	(tree_find_refs): Rename from tree_find_varrefs.  Update all users.
	Call add_default_defs.
	Call add_call_site_clobbers.
	Call add_ptr_may_refs.
	Call dump_referenced_vars.
	Create and destroy pointer_refs list.

	(find_refs_in_stmt): Set reference type to clobbering definition
	for the ASM_OUTPUTS and ASM_CLOBBERS expressions of an ASM_STMT.
	Set reference type to initial definition for the DECL_INITIAL node
	of a DECL_STMT.
	Clobber everything in CLEANUP_STMT nodes.

	(find_refs_in_expr): Re-write.
	Recursively clobber every VAR_DECL contained in non SIMPLE nodes.
	Mark indirect pointer references with M_INDIRECT flag.
	Add pointer references to pointer_refs list.
	Glob references to arrays and structures.
	Add function call expressions to call_sites list.

	(empty_ref_list): Do nothing if the list is empty already.
	(delete_ref_list): Ditto.
	(create_ref): Add new argument ADD_TO_BB.
	Set M_VOLATILE modifier if this is a reference to a volatile
	variable.
	Count number of incoming edges for V_PHI references before
	initializing the V_PHI_ARG array.
	Only add reference to basic block if ADD_TO_BB is true.
	Set output reference for the parent expression for V_DEF
	references.
	(remove_tree_ann): Do nothing if the tree didn't have an
	annotation.

	* tree-flow.h (enum treeref_type): Remove.  Update all users.
	(union varref_def): Ditto.
	(tree_ref): Rename from varref.  Update all users.
	(V_DEF): Declare.
	(V_USE): Declare.
	(V_PHI): Declare.
	(V_PHI_ARG): Declare.
	(E_FCALL): Declare.
	(E_PHI): Declare.
	(E_USE): Declare.
	(E_KILL): Declare.
	(E_INJ): Declare.
	(M_DEFAULT): Declare.
	(M_CLOBBER): Declare.
	(M_MAY): Declare.
	(M_PARTIAL): Declare.
	(M_INITIAL): Declare.
	(M_INDIRECT): Declare.
	(M_VOLATILE): Declare.
	(struct tree_ref_common): Rename from treeref_common.  Update all
	users.
	Change type of field 'type' to HOST_WIDE_INT.
	Rename field 'sym' to 'var'.
	(struct var_ref): Rename from varref.  Update all users.
	Join the structures varuse
	and vardef into a single structure.
	(struct expr_ref_common): Rename from exprref_common.  Update all
	users.
	(struct expr_use): Rename from expruse.  Update all users.
	(struct expr_phi): Rename from exprphi.  Update all users.
	(union tree_ref_d): Rename from varref_def.  Update all users.
	(EXPRPHI_PHI_ARGS): Rename from EXPRPHI_PHI_CHAIN.  Update all
	users.
	(struct tree_ann_d): Rename field 'compound_stmt' to
	'compound_parent'.
	Add field 'output_ref'.
	(enum tree_flags): New enum.
	(TF_REFERENCED): New flag.
	(phi_arg): Remove.
	(get_num_phi_args): Remove.
	(get_phi_arg): Remove.

	(struct vardef): Remove.  Update all users.
	(VARDEF_IMM_USES): Ditto.
	(VARDEF_SAVE_CHAIN): Ditto.
	(VARDEF_RUSES): Ditto.
	(VARDEF_MARKED): Ditto.
	(VARDEF_PHI_ARGS): Ditto.
	(struct varuse): Ditto.
	(VARUSE_IMM_RDEF): Ditto.
	(VARUSE_RDEFS): Ditto.
	(VARREF_ID): Ditto.
	(VARREF_TYPE): Ditto.
	(VARREF_BB): Ditto.
	(VARREF_EXPR): Ditto.
	(VARREF_OPERAND_P): Ditto.
	(VARREF_STMT): Ditto.
	(VARREF_SYM): Ditto.
	(IS_DEFAULT_DEF): Ditto.
	(IS_ARTIFICIAL_REF): Ditto.
	(TREE_ANN): Ditto.
	(BB_FOR_STMT): Ditto.
	(TREE_CURRDEF): Ditto.
	(TREE_REFS): Ditto.
	(TREE_COMPOUND_STMT): Ditto.
	(TREE_FLAGS): Ditto.
	(BB_ANN): Ditto.
	(BB_PARENT): Ditto.
	(BB_REFS): Ditto.
	(BB_PREV_CHAIN_P): Ditto.
	(BB_BINDING_SCOPE): Ditto.
	(BB_LOOP_HDR): Ditto.
	(FOR_INIT_STMT_BB): Ditto.
	(FOR_COND_BB): Ditto.
	(FOR_EXPR_BB): Ditto.
	(END_WHILE_BB): Ditto.
	(DO_COND_BB): Ditto.
	(BB_EMPTY_P): Ditto.

	(ref_type): New inline function.
	(ref_var): New inline function.
	(ref_stmt): New inline function.
	(ref_expr): New inline function.
	(ref_bb): New inline function.
	(ref_id): New inline function.
	(replace_ref_operand_with): New inline function.
	(restore_ref_operand): New inline function.
	(imm_uses): New inline function.
	(save_chain): New inline function.
	(set_save_chain): New inline function.
	(reached_uses): New inline function.
	(marked_with): New inline function.
	(mark_def_with): New inline function.
	(phi_args): New inline function.
	(num_phi_args): New inline function.
	(phi_arg): New inline function.
	(imm_reaching_def): New inline function.
	(set_imm_reaching_def): New inline function.
	(imm_reaching_def_edge): New inline function.
	(set_imm_reaching_def_edge): New inline function.
	(reaching_defs): New inline function.
	(tree_annotation): New inline function.
	(has_annotation): New inline function.
	(bb_for_stmt): New inline function.
	(set_bb_for_stmt): New inline function.
	(currdef_for): New inline function.
	(set_currdef_for): New inline function.
	(tree_refs): New inline function.
	(add_tree_ref): New inline function.
	(remove_tree_ref): New inline function.
	(compound_parent): New inline function.
	(set_compound_parent): New inline function.
	(set_tree_flag): New inline function.
	(clear_tree_flag): New inline function.
	(tree_flags): New inline function.
	(reset_tree_flags): New inline function.
	(output_ref): New inline function.
	(set_output_ref): New inline function.
	(bb_annotation): New inline function.
	(bb_parent): New inline function.
	(set_bb_parent): New inline function.
	(bb_refs): New inline function.
	(remove_bb_ref): New inline function.
	(prev_chain_p): New inline function.
	(set_prev_chain_p): New inline function.
	(binding_scope): New inline function.
	(set_binding_scope): New inline function.
	(header_blocks): New inline function.
	(for_init_bb): New inline function.
	(set_for_init_bb): New inline function.
	(for_cond_bb): New inline function.
	(set_for_cond_bb): New inline function.
	(for_expr_bb): New inline function.
	(set_for_expr_bb): New inline function.
	(end_while_bb): New inline function.
	(set_end_while_bb): New inline function.
	(do_cond_bb): New inline function.
	(set_do_cond_bb): New inline function.
	(bb_empty_p): New inline function.

	(referenced_vars): Rename from referenced_symbols.  Update all
	users.
	(num_referenced_vars): Declare.
	(NREF_SYMBOLS): Remove.  Update all users.
	(REF_SYMBOL): Ditto.
	(ADD_REF_SYMBOL): Ditto.
	(referenced_var): New inline function.
	(call_sites): Declare.
	(next_tree_ref_id): Rename from next_varref_id.  Update all users.
	(is_computed_goto): Declare.
	(is_pure_fcall): Declare.
	(fcall_takes_ref_args): Declare.
	(add_ref_to_list_after): Declare.
	(find_list_node): Declare.
	(ref_type_name): Declare.
	(validate_ref_type): Declare.

	* tree-optimize.c: Include c-common.h.
	(optimize_function_tree): Store DECL_SAVED_TREE in a local
	variable.

	* tree-ssa-ccp.c (cp_lattice_meet): New function.
	(visit_phi_node): Call it.
	(add_outgoing_control_edges): New function.
	(visit_expression_for): Call it.
	Don't handle static initializers.
	Handle computed gotos.
	(add_control_edge): New function.
	(visit_condexpr_for, simulate_block, add_outgoing_control_edges): Call
	it.
	(simulate_def_use_chains): Only look at unmodified V_USE references.
	(ssa_ccp_substitute_constants): Ditto.
	(evaluate_expr): Ditto.
	(initialize): Set initial value for incoming parameters and globals
	to VARYING.
	Set initial value for initialized static variables to VARYING,
	unless the variable is read-only.
	(set_lattice_value): Don't special case globals, volatiles and
	variables with their address taken.

	* tree-ssa.c: Include tree-simple.h.
	(tree_build_ssa): Don't add default definitions.
	(insert_phi_terms): Add new PHI nodes at the beginning of the list
	of references for the basic block.
	(search_fud_chains): Add def-def chains for non-killing
	definitions.
	(delete_ssa): Remove list call_sites.
	Set num_referenced_vars to 0.
	Set referenced_vars to NULL.
	(follow_chain): Follow def-def chains for non-killing definitions.
	(is_upward_exposed): Change return type to bool.
	(add_phi_arg): Remove.

2002-09-06  Frank Ch. Eigler  <fche@redhat.com>

	* tree-mudflap.c (deferred_static_decl*): Correct GTY markup.
	(mudflap_enqueue_decl): Correct iteration bounds.
	(mf_init_extern_trees): Add more constness to mf_cache_structptr_type.
	(mf_offset_expr_of_array_ref): Remove excess mx_flagging.  save_expr
	array subscripts.
	(mf_build_check_statement_for): Reorganize to take explicit
	check-base/size arguments, in addition to value argument.  save_expr
	array subscripts.  Copy value/base/size subtrees.
	(mx_xfn_indirect_ref): Support marking of subtrees for nontraversal.
	Track source line numbers more aggressively.  For arrays, check bounds
	from base through indexed element, not just the indexed element.
	Use nontraversal flagging to eliminate some excess instrumentation.
	(mf_xform_derefs): Support nontraversal by a hash table.
	(*): Remove "{{{"/"}}}" folding marks.

2002-09-02  Daniel Berlin  <dberlin@dberlin.org>

	* tree-alias-common.[ch]: New files.
	* tree-alias-steen.[ch]: Split out common stuff into
	tree-alias-common.[ch].
	* c-config-lang.in: Modify to use tree-alias-common.[ch] instead of
	tree-alias-steen, since this is where the GTY'd stuff is now.
	* Makefile.in: Add dependencies for tree-alias-common.[ch].

2002-09-03  Diego Novillo  <dnovillo@redhat.com>

	* c-simplify.c (simplify_goto_stmt): New function.
	(simplify_stmt): Call it.
	* tree-simple.c: Document grammar for GOTO_STMT nodes.
	(rationalize_compound_expr): Wrap it with #if 0/#endif.
	(get_base_symbol): Minor comment fixup.

2002-09-03  Frank Ch. Eigler  <fche@redhat.com>

	* gcc.c (MFWRAP_SPEC): Add --wrap=alloca.

2002-09-01  Diego Novillo  <dnovillo@redhat.com>

	* c-simplify.c (simplify_stmt): Mark CLEANUP_STMTs and ASM_STMTs
	not SIMPLE.
	(simplify_for_stmt): Do not allow expression sequences in
	FOR_INIT_STMT and FOR_EXPR nodes.
	* tree-simple.c: Document difference with original SIMPLE grammar.

2002-08-31  Frank Ch. Eigler  <fche@redhat.com>

	* tree-mudflap.c (mf_build_check_statement_for): Tolerate dereference
	of void pointers.
	(mx_register_decl): Correct typo in below patch.

2002-08-30  Graydon Hoare  <graydon@redhat.com>

	* tree-mudflap.c (mx_register_decl): Mark declarations as
	TREE_ADDRESSABLE when mudflap decides to register them.

2002-08-29  Graydon Hoare  <graydon@redhat.com>

	* tree-mudflap.c (mx_xfn_indirect_ref): Rewrite array references as
	pointer dereferences.
	(struct mf_xform_decls_data): New member: param_decls.
	(mx_register_decl): New function.
	(mx_xfn_xform_decls): Factor code out into mx_register_decl.
	Register live parameters with mudflap.
	(mx_xfn_find_addrof): Notice references to fields of structures
	and function parameters.

2002-08-29  Frank Ch. Eigler  <fche@redhat.com>

	* c-pretty-print.c (dump_c_tree): Detect loops in statement chains
	using a hash table to track visited status.
	* Makefile.in: Add hashtab.h dependency.

2002-08-28  Frank Ch. Eigler  <fche@redhat.com>

	* tree-mudflap.c (mudflap_enqueue_constant): Register non-string
	constants also.
	(mf_build_check_statement_for): Include pushlevel/pushdecl/poplevel
	for local variables.

2002-08-27  Frank Ch. Eigler  <fche@redhat.com>

	Better static registration:
	* varasm.c (make_decl_rtl): Handle DECL_RTL_SET_P case for
	mudflap static registration.
	* tree-mudflap.c (mudflap_enqueue_decl): Rewrite to handle
	deferred statics.
	(mudflap_finish_file): Call above fn back for deferred statics.

	Cleanup:
	* tree-mudflap.c (mf_varname_tree, mf_file_function_line_tree):
	Reorganize output_buffer reuse mechanism.
	(mf_build_check_statement_for): Set TREE_SIDE_EFFECTS.
	(mx_xfn_indirect_ref): Correct file/line collection tests.

	Dynamic linking support:
	* gcc.c (MFWRAP_SPEC): Make conditional on -static.  Add the
	newer wrapped functions dlopen/mmap/munmap.
	(MFLIB_SPEC): Be sensitive to -static.  Partial support for
	dynamic linking.

2002-08-26  Diego Novillo  <dnovillo@redhat.com>

	* Makefile.in (tree-ssa.o): Add dependency on ggc.h
	(c-simplify.o): Add dependency on langhooks-def.h
	* c-simplify.c: Include langhooks-def.h
	(simplify_function_tree): Do nothing if the front end does not
	support simplification.

	* tree-flow.h (struct vardef): Remove fields 'phi_chain' and
	'phi_chain_bb'.
	Add field 'phi_args'.
	(VARDEF_PHI_CHAIN): Remove.  Update all users.
	(VARDEF_PHI_CHAIN_BB): Remove.  Update all users.
	(VARDEF_PHI_ARGS): Define.
	(struct varuse): Rename field 'chain' to 'imm_rdef'.  Update all
	users.
	(VARUSE_IMM_RDEF):  Rename from VARUSE_CHAIN.  Update all users.
	(phi_arg): New structure.
	(get_num_phi_args): New function.
	(get_phi_arg): New function.
	(set_phi_arg): New function.
	(add_phi_arg): New function.
	(debug_phi_args): Declare.
	(dump_phi_args): Declare.
	* tree-dfa.c (create_ref): Remove initialization of
	VARDEF_PHI_CHAIN and VARDEF_PHI_CHAIN_BB.
	Initialize array VARDEF_PHI_ARGS.
	(dump_varref): Call dump_phi_args.
	(dump_phi_args): New function.
	(debug_phi_args): New function.
	* tree-ssa-ccp.c (PHI_PARMS): Remove.
	(EIE): Remove.
	(visit_phi_node): Get the argument's edge directly from the
	argument instead of calling find_edge.
	(initialize): Cast call to NUM_EDGES to unsigned.
	* tree-ssa-pre.c: Update uses of VARDEF_PHI_CHAIN,
	VARDEF_PHI_CHAIN_BB and VARUSE_CHAIN everywhere.
	* tree-ssa.c: Ditto.
	Include ggc.h.
	(search_fud_chains): Call add_phi_arg to add arguments to each PHI
	node.
	(tree_ssa_remove_phi_alternative): Call set_phi_arg to switch the
	last element with the element being removed.

2002-08-26  Diego Novillo  <dnovillo@redhat.com>

	* c-simplify.c (mostly_copy_tree_r): Unshare STMT_EXPR
	nodes.

2002-08-25  Diego Novillo  <dnovillo@redhat.com>

	* tree-dfa.c (find_refs_in_stmt): Replace calls to
	RETURN_EXPR with RETURN_STMT_EXPR.
	* c-simplify.c (simplify_return_stmt): Ditto.
	(deep_copy_node): Ditto.
	* c-pretty-print.c (dump_c_node): Ditto.

2002-08-24  Diego Novillo  <dnovillo@redhat.com>

	* c-pretty-print.c: Add `break' after calls to NIY in
	switch statements.

2002-08-23  Jeffrey A Law  (law@redhat.com)

	* tree-ssa-ccp.c (tree_ssa_ccp): Remove #if 0 that accidentally
	got checked in.  Cleanup the cfg to remove unreachable blocks
	discovered by CCP.

	* basic-block.h (EDGE_EXECUTABLE): New edge flag.

	* cfganal.c (find_edge): New function.

	* ssa-ccp.c: Convert to use EDGE_EXECUTABLE bit in the
	edge flags rather than a bitmap.  Convert edge worklist
	into a varray.  Avoids expensive find_index_edge calls.
	* tree-ssa-ccp.c: Likewise.

	* tree-flow.h (tree_ssa_remove_phi_alternative): Declare.
	* tree-ssa.c (tree_ssa_remove_phi_alternative): New function.
	* tree-ssa-ccp.c (optimize_unexecutable_edges): Remove
	PHI alternatives for unexecutable edges.  Also remove
	unexecutable edges from the CFG.

2002-08-22  Jeffrey A Law  (law@redhat.com)

	* Makefile.in (tree-optimize.o): Depend on tree-dchain.o
	* tree-optimize.c: Include tree-dchain.h.
	(optimize_function_tree): Unconditionally build and tear down
	the backpointers for the statement chain.

2002-08-22  Diego Novillo  <dnovillo@redhat.com>

	* tree-dfa.c (find_refs_in_stmt): Look for VARUSE references in
	initialization expressions.
	(find_refs_in_expr): Reformat.
	(remove_ref_from_list): Optimize for the common case of removing
	the head or the tail of the list.
	(add_ref_to_list_end): Reformat comment.
	(create_ref): Store the reference to LHS of assignment expressions.
	(dump_varref): Also dump immediate uses of PHI nodes.
	* tree-flow.h (IS_GHOST_DEF): Rename to IS_DEFAULT_DEF.  Update all
	callers everywhere.
	(struct tree_ann_def): Update comments for field 'currdef'.
	* tree-ssa-ccp.c (ssa_edges): Change type to ref_list.
	(SSA_NAME): Remove.
	(initialize): New function
	(finalize): New function.
	(visit_expression): Rename to visit_expression_for.  Update all
	callers.
	(visit_condexpr_for): New function.
	(visit_assignment): Rename to visit_assignment_for.  Update all
	callers.
	(examine_flow_edges): Rename to simulate_block.  Update all
	callers.
	(follow_def_use_chains): Rename to simulate_def_use_chains.  Update
	all callers.
	(evaluate_expr_for): Rename to evaluate_expr.  Change argument to
	'tree'.
	(set_lattice_value): New function.
	(tree_ssa_ccp): Change main loop to visit flow_edges and ssa_edges
	alternately.
	(visit_phi_node): Do not set the lattice value to UNDEFINED when we
	find a non-executable edge.
	(visit_expression_for): Default definitions for PARM_DECLs are
	assigned a VARYING value.
	Default definitions for any other local variables are assigned an
	UNDEFINED value.
	Clobber VARDEFs that are not the LHS of an assignment.
	Clobber VARDEFs that initialize non-const static variables.
	* tree-ssa.c (search_fud_chains): Set up def-use edges for PHI
	nodes and regular definitions.

	* tree.c (simple_cst_equal): Call simple_cst_list_equal to compare
	CONSTRUCTOR_ELTS pointers.

2002-08-22  Diego Novillo  <dnovillo@redhat.com>

	* c-pretty-print.c (buffer): New file local variable.
	(initialized): New file local variable.
	(print_c_tree): Don't call init_output_buffer.  Call
	maybe_init_pretty_print.
	(print_c_node): Ditto.
	(print_c_node_brief): Ditto.
	(maybe_init_pretty_print): New function.
	* tree-mudflap.c (mf_varname_tree): Only call init_output_buffer
	once.  Call output_clear_message_text before returning.

2002-08-21  Frank Ch. Eigler  <fche@redhat.com>

	Support source-file/line coordinates in check/violation messages.
	* tree-mudflap.c (mf_init_extern_trees): Add new "location" formal
	arg to __mf_check.
	(mf_file_function_line_tree): New function to build an actual location
	string.
	(build_check_statement_for): Call it / pass it.
	(mx_xfn_indirect_ref): Track source file/line location via
	STMT_LINENO, FILE_STMT, EXPR_WITH_FILE_LOCATION traversal memos.

2002-08-21  Daniel Berlin  <dberlin@dberlin.org>

	* dominance.c: Cache immediate dominators.

2002-08-20  Daniel Berlin  <dberlin@dberlin.org>

	* tree-alias-steen.h (struct tree_alias_ops): Add flag for
	interprocedural.

	* tree-alias-steen.c (steen_alias_ops): Set interprocedural to 0
	for now.
	(intra_function_call): New function to handle intraprocedural calling.
	(finc_func_aliases): Use it.
	Handle *x = *y, *x = &y, and *x = (cast) y.
	(display_points_to_set_helper): New function, split from ...
	(display_points_to_set): Here.
	(create_alias_vars): Try to print all alias vars we find in the
	alias_vars array, rather than just those that are linked directly to
	trees.
	Clear arrays when we finish if we aren't interprocedural.

2002-08-20  Frank Ch. Eigler  <fche@redhat.com>

	static object registration support:
	* tree-mudflap.c (mudflap_enqueue_decl, mudflap_enqueue_constant):
	Replace stubs with real code.
	(mf_enqueue_register_call): New function to generate asm-object
	call to __mf_register.
	(mf_flush_enqueued_calls): New function to emit global ctor function
	with enqueued __mf_register calls.
	(mf_varname_tree): Tolerate being called from non-function context.
	* c-objc-common.c: #include <tree-mudflap.h>.

	gengtypes support for mudflap:
	* Makefile.in (GTFILES): Include tree-mudflap.c.
	(gt-tree-mudflap.h): New target.
	* tree-mudflap.c: Annotate global tree nodes with GTY(()).
	* tree-nomudflap.c: Add dummy ggc root table.

2002-08-19  Diego Novillo  <dnovillo@redhat.com>

	* tree-dfa.c (find_refs_in_expr): If the current sub-expression is
	not SIMPLE, mark its parent.
	(create_ref): If the parent expression is not SIMPLE, create
	VARDEFs regardless of the original reference type.

	* tree-ssa-ccp.c (widen_bitfield): New function.
	(evaluate_expr_for): Call it.

2002-08-18  Diego Novillo  <dnovillo@redhat.com>

	* tree-ssa-ccp.c (evaluate_expr_for): Fix thinko in
	2002-08-17 patch.

2002-08-17  Diego Novillo  <dnovillo@redhat.com>

	* tree-ssa-ccp.c (evaluate_expr_for): keep VARREF_SYM in a local
	variable.

2002-08-16  Diego Novillo  <dnovillo@redhat.com>

	* basic-block.h (BB_CONTROL_EXPR): Update value.
	(BB_LOOP_CONTROL_EXPR): Define.
	(BB_CONTROL_ENTRY): Update value.
	* tree-cfg.c (make_for_stmt_blocks): Flag header blocks withh
	BB_LOOP_CONTROL_EXPR.
	(make_while_stmt_blocks): Ditto.
	(make_do_stmt_blocks): Ditto.
	(tree_delete_bb): Update annotations in the loop entry block when
	removing one of the loop expression blocks.

	* tree-dfa.c (tree_find_varrefs): Disregard empty blocks.
	(find_refs_in_stmt): Handle all the loop expression blocks in
	FOR_STMT and DO_STMT nodes.
	(find_refs_in_expr): Change first argument to tree *.  Update all
	callers.
	Force all references to be definitions when the expression is not
	in SIMPLE form.
	Also create references for compound variables and array references.
	Not just their individual components.
	Always use the original parent expression when making recursive
	calls.
	(create_ref): Add new argument operand_p.  Update all callers.
	(remove_tree_ann): New function.
	(dump_varref): Don't assume that the referenced symbol is a _DECL
	node.
	* tree-flow.h (treeref_common): Add field operand_p.
	(VARREF_OPERAND_P): Define.
	(BB_EMPTY_P): Define.
	(remove_tree_ann): Declare.
	(create_ref): Add new argument operand_p.
	* tree-simple.c (get_base_symbol): New function.
	* tree-simple.h (get_base_symbol): Declare.
	* tree-ssa-ccp.c (visit_assignment): Call it.
	(ssa_ccp_substitute_constants): Use VARREF_OPERAND_P to replace
	values into the expression.
	(evaluate_expr_for): Ditto.
	Do not try to evaluate the expression if the reference is not of
	the same type as the expression.
	After evaluation, restore the expression to its original form.
	* tree-ssa-pre.c (insert_occ_in_preorder_dt_order_): Update calls
	to create_ref.
	(finalize_): Ditto.
	(expr_phi_insertion): Ditto.
	* tree-ssa.c (tree_build_ssa): Ditto.
	(insert_phi_terms): Ditto.
	(delete_ssa): Call remove_tree_ann.

2002-08-15  Diego Novillo  <dnovillo@redhat.com>

	* c-pretty-print.c: Move extern definitions to diagnostic.h.
	(print_c_node_brief): New function.
	(debug_c_node_brief): New function.
	(debug_c_node): Add option for showing brief versions of statement
	nodes.  Update all callers.
	(print_declaration): Ditto.
	* c-simplify.c (simplify_function_tree): Add newline to debug
	output.
	* c-tree.h (print_c_node_brief): Declare.
	(debug_c_node_brief): Declare.
	* tree-cfg.c: Call print_c_node_brief in debugging otuput.
	* tree-mudflap.c (dump_c_node): Remove extern declaration.
	(mf_varname_tree): Update call to dump_c_node.

2002-08-15  Daniel Berlin  <dberlin@dberlin.org>

	* tree-cfg.c (find_expr_in_tree_helper): Renamed from find_expr_in_tree.
	(find_expr_in_tree): Redone.

2002-08-15  Daniel Berlin  <dberlin@dberlin.org>

	* tree-cfg.c (insert_before_ctrl_stmt): Fix insertion for various
	parts of for loop.

	* tree-ssa-pre.c (finalize_1): Set EXPR_STMT type to type of
	expression in it.

2002-08-14  Frank Ch. Eigler  <fche@redhat.com>

	* gcc.c (LINK_COMMAND_SPEC): Tweak placement of %(mflib).

2002-08-14  Diego Novillo  <dnovillo@redhat.com>

	* tree-simple.h (is_simple_decl_stmt): Declare.

2002-08-13  Frank Ch. Eigler  <fche@redhat.com>

	* gcc.c (MFWRAP_SPEC, MFLIB_SPEC): New macros, splitting MFLIB_SPEC.
	(mfwrap_spec, mflib_spec): Define corresponding vars.
	(static_specs): Define correponding spec aliases.
	(LINK_COMMAND_SPEC): Include -fmudflap refs to new spec aliases.
	(cpp_unique_options): Move -fmudflap MFCPP_SPEC clause here.
	(cc1_options): Move -fmudflap MFCC1_SPEC clause here.
	(MFCC1_SPEC, MFCPP_SPEC, MFLIB_SPEC): Remove macros and uses.

2002-08-13  Graydon Hoare  <graydon@redhat.com>

	* tree-mudflap.c (mf_build_check_statement_for): Factor code out of
	mx_xfn_indirect_ref for use in ARRAY_REF case.
	(mf_build_check_statement_for): Check size of underlying object
	rather than size of pointer.
	(mx_xfn_indirect_ref): Check ARRAY_REF expressions.
	(mf_offset_expr_of_array_ref): New function to calculate array ref
	offsets.

2002-08-13  Diego Novillo  <dnovillo@redhat.com>

	* tree-simple.c (is_simple_condexpr): Update comment.
	* tree-ssa-ccp.c (ssa_ccp_substitute_constants): Add debugging code.

2002-08-12  Jason Merrill  <jason@redhat.com>

	* c-typeck.c (build_component_ref): Don't add a NON_LVALUE_EXPR
	in C99 mode.

	* c-simplify.c (simplify_expr): Always simplify.  Loop if *expr_p
	changed.
	(simplify_addr_expr): Just replace *expr_p if we have a '&*'.
	* tree-simple.c (is_simplifiable_builtin): Add more tree codes.

2002-08-11  Diego Novillo  <dnovillo@redhat.com>

	* c-simplify.c: Fix typo.  Substitute CHECKING with ENABLE_CHECKING.
	* tree-cfg.c: Ditto.
	* tree-dfa.c: Ditto.
	* tree-ssa-ccp.c: Ditto.
	* tree-ssa.c: Ditto.

2002-08-11  Diego Novillo  <dnovillo@redhat.com>

	* tree-dfa.c (find_refs_in_expr): Use the given ref_type for some unary
	expressions.
	(create_ref): Insert ghost definitions at the beginning of the
	basic block.
	(find_expr_in_tree): Ignore IDENTIFIER_NODE.
	* tree-flow.h (treeref_common): Move the id field to the end of the
	structure.
	(IS_GHOST_DEF): Redefine to return non zero for definitions
	without an associated expression in basic block 0.
	* tree-ssa-ccp.c (tree_ssa_ccp): Use last_basic_block to allocate
	executable_blocks.
	(visit_expression): Set the lattice value for ghost definitions to
	VARYING.
	(examine_flow_edges): Update comments.
	* tree-ssa.c (tree_build_ssa): Create ghost definitions in basic
	block 0.
	(insert_phi_terms): Don't ignore ghost definitions.

	* c-simplify.c (simplify_function_tree): Return 0 if the function's
	body is not a COMPOUND_STMT.
	Return 0 if simplification failed.
	(simplify_expr): Change to return int.  Return non zero if
	simplification was successful.
	(c_simplify_expr): Add default case to avoid compile time warnings.
	(create_tmp_alias_var): Reformat comment.
	* tree-simple.h (simplify_expr): Change return type to int.

	* c-simplify.c: Guard consistency checks with #if defined CHECKING
	everywhere.
	* tree-cfg.c: Ditto.
	* tree-dfa.c: Ditto.
	* tree-ssa-ccp.c: Ditto.
	* tree-ssa.c: Ditto.

	* c-simplify.c: Include hard-reg-set.h, basic-block.h and
	tree-flow.h.
	(mark_not_simple_r): New function.
	(simplify_expr): Temporarily mark VA_ARG_EXPR and BIT_FIELD_REF
	trees as not simplifiable.
	(simplify_call_expr): If the builtin cannot be simplified, flag it.
	* Makefile.in (c-simplify.o): Update dependencies.
	* tree-dfa.c (create_ref): Variable references inside
	non-simplifiable expressions are always considered definitions.
	* tree-flow.h (TF_NOT_SIMPLE): New flag.
	* tree-simple.c (is_simplifiable_builtin): Update comments.

	* c-pretty-print.c (dump_c_node): Unparse anonymous structures and
	unions.
	Change rendering for SAVE_EXPR and BIT_FIELD_REF.

	* Makefile.in (tree-mudflap.o, tree-nomudflap.o): Add.

2002-08-11  Frank Ch. Eigler  <fche@redhat.com>

	Prototype -fmudflap support.
	* Makefile.in (C_AND_OBJC_OBJS): Add tree-mudflap.o.
	(OBJS): Add tree-nomudflap.o.
	* flags.h (flag_mudflap): New flag.
	* toplev.c: Map "-fmudflap" to that flag.
	* c-decl.c (c_expand_body): Call mudflap_c_function if flag_mudflap.
	* c-objc-common.c (c_objc_common_finish_file): Add mudflap hook.
	* varasm.c (make_decl_rtl): Add mudflap hook.
	(output_constant_def_contents): Ditto.
	* tree-mudflap.c: New file: implement mudflap instrumentation.
	* tree-nomudflap.c: New file: stub functions for non-C frontends.
	* tree-mudflap.h: New file: define exported functions.
	* gcc.c (MFLIB_SPEC, MFCC1_SPEC, MFCPP_SPEC): Add general
	-fmudflap spec mappings.
	* c-simplify.c (simplify_stmt): Stub: handle CLEANUP_STMT nodes.
	* tree-dfa.c (find_refs_in_stmt): Ditto.
	* c-pretty-print.c (dump_c_node): Ditto.
	(print_declaration): Handle "extern" decls.  Handle arrays with
	indefinite sizes.
	* tree-simple.h (is_simple_stmt, is_simple_compstmt): Remove decls.

2002-08-11  Jason Merrill  <jason@redhat.com>

	* c-simplify.c (simplify_self_mod_expr): Unshare the lhs before
	using it again.
	(simplify_compound_lval): Don't unshare.

	* c-simplify.c (c_simplify_expr): Check statement_code_p.

	* c-simplify.c (maybe_fixup_loop_cond): Move to cp/cp-simplify.c.
	(simplify_for_stmt): Don't call it.
	(simplify_while_stmt): Don't call it.

2002-08-11  Diego Novillo  <dnovillo@redhat.com>

	* c-simplify.c (simplify_compound_lval): Use mostly_copy_tree_r.

2002-08-09  Jason Merrill  <jason@redhat.com>

	* langhooks-def.h: Replace the simplify_function_tree hook
	with a simplify_expr hook.
	* langhooks.h: Likewise.
	* langhooks.c: Replace lhd_simplify_function_tree with
	lhd_simplify_expr.
	* c-lang.c (LANG_HOOKS_SIMPLIFY_FUNCTION_TREE): Don't define.
	(LANG_HOOKS_SIMPLIFY_EXPR): Define.
	* c-decl.c (c_expand_body): De-hook simplify_function_tree.
	* c-common.h: Declare c_simplify_expr.
	* c-simplify.c (simplify_function_tree): Rename from
	c_simplify_function_tree.  Call simplify_expr instead of
	simplify_stmt.
	(c_simplify_expr): Split out from...
	(simplify_expr): ...here.  No longer static.  Call langhook.
	(is_simple_decl_stmt): Move here from tree-simple.c.
	* tree-simple.c: Don't include c-tree.h.
	(is_simple_stmt, is_simple_compstmt): Remove.
	(is_simple_decl_stmt): Move to c-simplify.c.
	* tree.h: Declare simplify_function_tree.
	* tree-simple.h: Declare simplify_expr, add_tree.

	* tree-simple.c (rationalize_compound_expr): New fn.

2002-08-07  Diego Novillo  <dnovillo@redhat.com>

	* basic-block.h (EDGE_TRUE_VALUE): Define.
	(EDGE_FALSE_VALUE): Define.
	* tree-cfg.c: Include c-tree.h.
	(make_for_stmt_edges): Call simple_cst_equal to determine infinite
	and zero iteration loops.
	Set EDGE_TRUE_VALUE and EDGE_FALSE_VALUE to edges coming out of
	predicate block.
	(make_while_stmt_edges): Ditto.
	(make_do_stmt_edges): Ditto.
	(make_if_stmt_edges): Set EDGE_TRUE_VALUE and EDGE_FALSE_VALUE to
	edges coming out of predicate block.

	* c-simplify.c (simplify_compound_lval): Unshare the compound
	reference before simplification.

	* tree-cfg.c (insert_before_ctrl_stmt): Call print_c_node instead of
	print_node_brief.
	(insert_before_normal_stmt): Ditto.
	(insert_after_ctrl_stmt): Ditto.
	(insert_after_normal_stmt): Ditto.
	(insert_after_loop_body): Ditto.
	(replace_expr_in_tree): Ditto.
	(tree_dump_bb): Ditto.

	* tree-dfa.c: Include c-tree.h
	(next_varref_id): New global variable.
	(tree_find_varrefs): Initialize it to 0.
	(create_ref): Increment it after creating a new reference.  Store
	it in ref.common.id.
	Add the new reference to the list of references for the containing
	expression.
	(dump_varref): Show the reference ID.
	* tree-flow.h (treeref_common): Add field 'id'.
	(VARREF_ID): Define.

	* tree-dump.c (dump_files): Re-order dump files.
	* tree.h (tree_dump_index): Ditto.

	* tree-optimize.c (optimize_function_tree): Remove blank lines.

	* tree-simple.c: Remove unary operator '!' from grammar.

	* tree-flow.h (tree_ann_def): Add field 'flags'.
	(TF_FOLD): Define.
	(TREE_ANN): Re-define into an lvalue.
	(BB_FOR_STMT): Ditto.
	(TREE_CURRDEF): Ditto.
	(next_varref_id): Declare.
	* tree-ssa-ccp.c: Include tree-simple.h
	(ssa_edges): Convert sbitmap into varray_type.  Update all uses.
	(decl_map): Remove.
	(SSA_NAME): Use VARREF_ID instead of DECL_UID.
	(visit_assignment): New function.
	(evaluate_expr_for): New function.
	(dump_lattice_value): New function.
	(tree_ssa_ccp): Add debugging dumps.
	Remove #if 0 code everywhere.
	(visit_phi_node): Add debugging dumps.
	Also visit PHI arguments.
	Remove basic block argument
	(visit_expression): Re-implement.
	(examine_flow_edges): Add debugging dumps.
	(ssa_ccp_substitute_constants): Add debugging dumps.
	Update comments.
	Mark and fold expressions with substituted constants.
	* tree-ssa.c (search_fud_chains): Don't check if BB_REFS(bb) is
	empty before iterating.
	Add comment explaining how we chain PHI node arguments to their
	originating basic block.

	* Makefile.in (tree-cfg.o, tree-dfa.o, tree-ssa-ccp.o): Update
	dependencies.

2002-07-29  Daniel Berlin  <dberlin@dberlin.org>

	* tree-ssa-pre.c (tree_perform_ssapre): Ben forgot to add a
	dump_begin call when he removed the before dump.

2002-07-24  Daniel Berlin  <dberlin@dberlin.org>

	* tree-alias-ecr.c (ECR_new_with_type): Use correct number in mapping.

2002-07-23  Daniel Berlin  <dberlin@dberlin.org>

	* c-simplify.c (simplify_for_stmt): Deep copy the result of the
	tail_expression, so it's unshared.

2002-07-23  Daniel Berlin  <dberlin@dberlin.org>

	* tree-flow.h: Add prototype for create_alias_vars.

	* tree-alias-steen.c (display_points_to_set): New function.
	(init_alias_vars): Display points to sets when we are done.

	* disjoint-set.h (disjoint_set_def): ptr_alias to ECR_def so that
	we mark parent properly.

2002-07-24  Diego Novillo  <dnovillo@redhat.com>

	* Makefile.in (GTFILES): Move tree-alias-type.[ch],
	tree-alias-ecr.[ch], tree-alias-steen.[ch] from ...
	* c-config-lang.in (gtfiles): ... here.

	* tree-simple.c (is_simplifiable_builtin): Replace
	BUILT_IN_VARARGS_START with BUILT_IN_VA_START.

2002-07-23  Andreas Jaeger  <aj@suse.de>

	* tree-ssa-pre.c (hash_expr_tree): Remove.

	* c-call-graph.c (write_dtd): Remove.

	* tree-ssa.c (delete_refs): Remove.

2002-07-23  Andreas Jaeger  <aj@suse.de>

	* gengtype.c (open_base_files): Add tree.h.

	* tree-alias-type.h: Remove inclusion of tree.h.

	* tree-alias-steen.c: Include tree.h.
	Add prototype for create_fun_alias_var_ptf.

	* tree-alias-ecr.c: Add prototype for ECR_add_pending.

	* tree-ssa-pre.c (calculate_preorder): Remove unused variables.

	* tree-simple.c: Include expr.h and rtl.h for prototypes.

	* tree-optimize.c: Include tree-alias-steen.h for prototypes.

	* Makefile.in (tree-optimize.o): Add tree-alias-steen.h.
	(tree-simple.o): Add expr.h and rtl.h.
	(tree-alias-steen.o): Add tree.h.

	* diagnostic.h: Add declaration of debug_output_buffer.

	* c-call-graph.c (construct_call_graph): Make static to follow
	declaration.
	(construct_call_graph): Use #if 0 instead of C++ comments to
	disable code.

2002-07-20  Andreas Jaeger  <aj@suse.de>

	* doc/invoke.texi (Option Summary): Fix syntax.

2002-07-19  Jason Merrill  <jason@redhat.com>

	* c-simplify.c (simplify_return_stmt): Do simplify a returned
	expression in a void function.

	* c-simplify.c (simplify_stmt_expr): Handle C++ return semantics.

2002-07-19  Jason Merrill  <jason@redhat.com>

	* c-pretty-print.c (dump_c_node) [TARGET_EXPR]: Handle.
	[COND_EXPR]: Print a returned expression in a void function.

2002-07-19  Ben Elliston  <bje@redhat.com>

	* tree-ssa-pre.c (tree_perform_ssapre): Don't dump the original
	tree before applying this optimisation.

	* flags.h (flag_dump_tree_all_ssa): New flag.
	* toplev.c (flag_dump_tree_all_ssa): New flag.
	(f_options): Add "dump-tree-all-ssa" option.
	(process_options): Process flag_dump_tree_all_ssa.
	* tree.h (dump_enable_all_ssa): Declare.
	* tree-dump.c (dump_enable_all_ssa): New function.
	* doc/invoke.texi (Option Summary): Add -fdump-tree-all-ssa and
	-fdump-tree-ssapre options.
	(Debugging Options): Describe in more detail.
	* c-simplify.c (c_simplify_function_tree): Dump the original tree
	only if a TDI_original dump is requested, rather than TDI_simple.

	* tree-dump.c (dump_begin): Include phase number in dump filename.

2002-07-18  Ben Elliston  <bje@redhat.com>

	* tree-dump.c (dump_files): Rename "unparse" to "raw".
	* tree.h (TDF_UNPARSE): Rename from this ..
	(TDF_RAW): .. to this.
	* tree-ssa-pre.c (tree_perform_ssapre): Use TDF_RAW and invert the
	logical sense of this flag.
	* tree-ssa-ccp.c (tree_ssa_ccp): Likewise.
	* c-simplify.c (c_simplify_function_tree): Likewise.

2002-07-18  Daniel Berlin  <dberlin@dberlin.org>

	* tree-ssa-pre.c (calculate_preorder): New function.
	(tree_perform_ssapre): Use it, rather than
	flow_compute_preorder_tranversal, which seems to not do
	what we want.

2002-07-18  Daniel Berlin <dberlin@dberlin.org>

	* tree-alias-type.c: Move gt-tree-alias-type include to end of file.

	* tree-alias-steen.c: Move gt-tree-alias-steen include to end of file.

2002-07-18  Daniel Berlin  <dberlin@dberlin.org>

	* gengtype.c (get_base_file_bitmap): Mark tree-alias-* and
	disjoint-set* as c/c++/objc files only.

	* Makefile.in (gt-tree-alias-type.h): Add.
	(tree-alias-type.o): Add dependency on gt-tree-alias-type.h.

	* tree-alias-type.c: Include gt-tree-alias-type.h.
	(alias_bottom): Add a GTY marked version of alias_bottom here.

	* tree-alias-type.h: Remove the GTY marker from alias_bottom.

2002-07-17  Daniel Berlin  <dberlin@dberlin.org>

	* tree-alias-ecr.c (ECR_union_pending_sets): Only clear bitmap if
	it's not NULL.

2002-07-16  Jason Merrill  <jason@redhat.com>

	* c-simplify.c (add_tree): Build an EXPR_STMT immediately.
	(convert_to_stmt_chain): Remove.
	(simplify_stmt, simplify_for_stmt, simplify_while_stmt,
	simplify_do_stmt, simplify_expr_wfl, tail_expression): Adjust.

2002-07-17  Daniel Berlin  <dberlin@dberlin.org>

	* tree-alias-ecr.c: New file. Equivalence Class Representation.

	* tree-alias-steen.c: New file. Steengaard Alias Analysis.

	* disjoint-set.c: New file. Disjoint set data structure.

	* tree-alias-type.c: New file. Alias types.

	* c-simplify.c (create_tmp_alias_var): New function, like
	create_tmp_var, but doesn't add it to the current binding.

	* tree-simple.h: Prototype for create_tmp_alias_var.

	* tree-optimize.c (build_tree_ssa): Create alias variables, if
	requested.

	* flags.h: Add flag_tree_points_to.

	* toplev.c: Ditto.

	* gengtype.c (open_base_files): Add disjoint-set.h,
	tree-alias-ecr.h, tree-alias-type.h, tree-flow.h.

	* Makefile.in (C_AND_OBJC_OBJS): Add disjoint-set.o,
	tree-alias-ecr.o, tree-alias-type.o, tree-alias-steen.o.
	(tree-alias-steen.o): Add dependencies.
	(tree-alias-ecr.o): Ditto.
	(tree-alias-type.o): Ditto.
	(disjoint-set.o): Ditto.

2002-07-10  Daniel Berlin  <dberlin@dberlin.org>
	    Diego Novillo  <dnovillo@redhat.com>

	* Makefile.in (C_AND_OBJC_OBJS): Add tree-ssa-ccp.o
	* flags.h (flag_tree_ssa_ccp): Declare.
	* fold-const.c (eval_subst): Make extern.
	* toplev.c (flag_tree_ssa_ccp): Define.
	(f_options): Document -ftree-ssa-ccp.
	* tree-dump.c (dump_files): Add -fdump-tree-ccp.
	* tree-flow.h (tree_perform_ssapre): Move declaration ...
	* tree-optimize.h: ... here.
	(tree_ssa_ccp): Declare.
	* tree-optimize.c (optimize_function_tree): Call tree_ssa_ccp.
	* tree-ssa-ccp.c: New file.
	* tree.c (next_decl_uid): Remove static declaration.
	* tree.h (next_decl_uid): Declare.
	(tree_dump_index): Add TDI_ccp.
	* cp/Make-lang.in (CXX_C_OBJS): Add tree-ssa-ccp.o.
	* doc/invoke.texi: Document -ftree-ssa-pre and -ftree-ssa-ccp.

2002-07-09  Daniel Berlin  <dberlin@dberlin.org>

	s/varrays of refs/ref_list of refs/g

	* tree-flow.h: Add ref_list structure.
	Add prototypes for ref_list functions.
	(FOR_EACH_REF, FOR_EACH_REF_REV): New macros to iterate through
	ref lists.
	* tree-cfg.c, tree-ssa.c, tree-ssa-pre.c: Update all uses.

	* tree-dfa.c (create_ref_list): New function.
	(delete_ref_list): Ditto.
	(empty_ref_list): Ditto.
	(add_ref_to_list_end): Ditto.
	(add_ref_to_list_begin): Ditto.
	(remove_ref_from_list): Ditto.

2002-07-04  Diego Novillo  <dnovillo@redhat.com>

	* tree-simple.c (is_simplifiable_builtin): Don't simplify target
	builtins.

2002-07-03  Diego Novillo  <dnovillo@redhat.com>

	* c-simplify.c (simplify_decl_stmt): Unshare the
	initializer nodes before simplification.

2002-06-29  Aldy Hernandez  <aldyh@quesejoda.com>
	    Diego Novillo  <dnovillo@redhat.com>

	* c-simplify.c (simplify_call_expr): Do not bail on all builtins.
	(is_simple_call_expr): Same.
	(simplify_addr_expr): New function.
	(simplify_expr): Call it.

	* tree-simple.c (is_simplifiable_builtin): New.
	(is_simple_compound_lval): Do not bail on INDIRECT_REF.

	* tree-simple.h: New prototype for is_simplifiable_builtin.

2002-06-26  Daniel Berlin  <dberlin@dberlin.org>

	* tree-ssa.c (tree_build_ssa): Call free_dominance_info, not
	free, on idom.

	* tree-ssa-pre.c (compute_domchildren): Update to use new
	dominance_info structure, rather than idom array.
	(tree_perform_ssapre): Don't forget to free the dominance info.

	s/VARRAY_FREE/VARRAY_CLEAR/g now that VARRAY's are ggc allocated.

2002-06-24  Diego Novillo  <dnovillo@redhat.com>

	* tree-ssa.c (build_fud_chains): Use dominance_info instead of int *.
	(search_fud_chains): Ditto.
	Call get_immediate_dominator.
	* tree-ssa-pre.c (a_dom_b): Call dominated_by_p.
	(pre_idom): Change type to dominance_info.  Update all uses.
	(pre_doms): Remove.  Update all uses.

2002-06-20  Jason Merrill  <jason@redhat.com>

	Simplify DECL_STMT, CONSTRUCTOR and COMPOUND_LITERAL_EXPR.
	* tree-simple.c (is_simple_decl_stmt): New fn.
	(is_simple_constructor, is_simple_constructor_elt): New fns.
	(is_simple_stmt, is_simple_unary_expr): Use them.
	(is_simple_modify_expr): Accept an INIT_EXPR.
	(is_simple_id): Don't allow a COMPOUND_LITERAL_EXPR.
	(is_simple_unary_expr): Here either.
	* c-simplify.c (simplify_decl_stmt, simplify_constructor): New fns.
	(simplify_compound_literal_expr): New fn.
	(simplify_stmt, simplify_expr): Use them.
	(get_initialized_tmp_var): Use an INIT_EXPR.
	(simplify_modify_expr): Accept an INIT_EXPR.
	(simplify_for_stmt): Call simplify_decl_stmt.
	(get_name): Don't crash if the decl is anonymous.
	(tail_expression): New fn.
	* tree-simple.h: Declare new fns.
	* c-pretty-print.c (dump_c_node) [INIT_EXPR]: Print like MODIFY_EXPR.
	(dump_c_node, op_prio): Handle COMPOUND_LITERAL_EXPR.
	* c-simplify.c (simplify_expr_wfl): Only wrap pre and post stuff
	that came from our subexpression.
	(simplify_stmt): Restore stmts_are_full_exprs_p.

	* c-simplify.c (simplify_expr_wfl): Bracket substatements with
	FILE_STMTs rather than wrapping them in EXPR_WITH_FILE_LOCATION.
	(simplify_stmt): Update lineno and input_filename from stmts.
	(simplify_expr et al): Don't copy lineno between stmts.  Don't pass
	enclosing stmt down.
	(update_line_number): Remove.

	* c-simplify.c (simplify_expr_stmt): Don't check
	is_last_stmt_of_scope.
	(simplify_stmt_expr): Check it here.  Set *expr_p to void_zero_node
	instead of NULL_TREE.
	(expr_has_effect): No need to deal with NULL exprs now.
	(simplify_expr_wfl): Likewise.

2002-06-18  Diego Novillo  <dnovillo@redhat.com>

	* c-simplify.c (strip_off_ending): Rename to remove_suffix.
	Update callers.
	(is_last_stmt_of_scope): New function.
	(simplify_expr_stmt): Call it.
	(stmt_has_effect): Ditto.
	(c_simplify_function_tree): Update comment.

2002-06-18  Jason Merrill  <jason@redhat.com>

	* c-simplify.c (maybe_fixup_loop_cond): New fn for C++ conditions.
	(simplify_for_stmt, simplify_while_stmt): Use it.

	* c-pretty-print.c (dump_c_node) [COMPONENT_REF]: Print "->" if
	appropriate.

2002-06-19  Jason Merrill  <jason@redhat.com>

	* c-simplify.c (simplify_stmt_expr): New fn.
	(simplify_expr): Call it.
	(stmt_expr_level): Remove.
	(stmt_has_effect, c_simplify_function_tree): Remove refs.
	(expr_has_effect): Deal with null expression.
	(simplify_expr_wfl): If the subexpression is simplified away, drop
	this one, too.  Don't wrap statements.
	* tree-simple.c (is_simple_unary_expr): Don't allow a STMT_EXPR.
	* tree-inline.c (copy_tree_r): Clear the aux field in the copies.

2002-06-17  Frank Ch. Eigler  <fche@redhat.com>

	* c-pretty-print.c (dump_c_node): Print pointer-type
	integer constants as raw numbers with a "B" (bytes) suffix.

2002-06-17  Jason Merrill  <jason@redhat.com>

	* c-simplify.c (simplify_stmt): Take a tree *.
	(various): Adjust.

2002-06-16  Daniel Berlin  <dberlin@dberlin.org>

	* c-simplify.c (get_name): New function.
	(get_initialized_tmp_var): Use it to try to get a prefix for
	create_tmp_var from the value we are initializing to.
	(simplify_cond_expr): Add prefix for create_tmp_var.
	(create_tmp_var): Add prefix argument.

	* tree-simple.h: Change create_tmp_var prototype to match.

	* tree-ssa-pre.c: Change create_tmp_var call.

2002-06-15  Diego Novillo  <dnovillo@redhat.com>

	* Makefile.in (c-decl.o): Add dependency on langhooks.h
	(c-simplify.o): Add dependency on flags.h, langhooks.h, toplev.h
	and rtl.h.
	* c-decl.c: Include langhooks.h.
	(c_expand_body): Simplify the function.  If it succeeds and
	-ftree-ssa is enabled, call optimize_function_tree.
	* c-simplify.c: Include flags.h, rtl.h and toplev.h.
	(simplify_expr_stmt): New function.
	(simplify_stmt): Call it.
	* tree-optimize.c: Don't include langhooks.h.
	(optimize_function_tree): Don't call lang_hooks.simplify_function_tree.

	* c-decl.c (c_expand_body): Do not simplify nor optimize the
	function if -fdisable-simple is given.
	* c-simplify.c (simplify_expr): Use is_simple_addr_expr_arg when
	simplifying ADDR_EXPR nodes.
	* flags.h (flag_disable_simple): Declare.
	* toplev.c (flag_disable_simple): Define.
	(f_options): Document -fdisable-simple.
	(process_options): Warn if -fdisable-simple is used with
	optimization enabled.
	* tree-simple.c (is_simple_addr_expr_arg): New function.
	(is_simple_unary_expr): Call it.
	* tree-simple.h (is_simple_addr_expr_arg): Declare.
	* doc/invoke.texi: Document -fdisable-simple.

	* c-pretty-print.c (dump_c_node): Handle DECL_STMT nodes inside
	FOR_INIT_STMT.
	* c-simplify.c (c_simplify_function_tree): Don't do anything if the
	program had errors.
	(simplify_stmt): Skip DECL_STMTs.
	(simplify_for_stmt): Handle DECL_STMT nodes inside FOR_INIT_STMT.
	(simplify_save_expr): New function.
	(simplify_expr): Call it.
	(tree_last_decl): Handle cases where DECL_STMTs are found before
	the body of the function.
	* tree-simple.c (is_simple_stmt): Handle DECL_STMT nodes inside
	FOR_INIT_STMT.
	(is_simple_compound_lval): Handle nodes wrapped in NON_LVALUE_EXPR.

2002-06-14  Frank Ch. Eigler  <fche@redhat.com>

	* c-pretty-print.c (dump_c_node): Print more type qualifiers,
	especially for pointers.

2002-06-11  Diego Novillo  <dnovillo@redhat.com>

	* c-simplify.c: Remove folding markers.
	(insert_before_first): Remove unused function.
	* tree-cfg.c: Remove folding markers.
	* tree-dfa.c: Ditto.
	* tree-flow.h: Ditto.
	* tree-optimize.c: Ditto.
	* tree-optimize.h: Ditto.
	* tree-simple.c: Ditto.
	* tree-ssa.c: Ditto.

2002-06-11  Jason Merrill  <jason@redhat.com>

	* c-simplify.c (add_tree): Don't deep-copy expressions.
	(simplify_for_stmt): Only deep-copy pre_cond_s the first time.
	Don't deep copy expr_chain.

2002-06-10  Diego Novillo  <dnovillo@redhat.com>

	* tree-cfg.c (remove_bb_ann): Don't call VARRAY_FREE.
	* tree-dfa.c (create_ref): Use sizeof (ref) instead of
	refs->element_size.
	* tree.h (struct tree_common): Skip field 'aux' from GC type
	information.
	* tree-optimize.c (optimize_function_tree): Don't call
	VARRAY_REF.
	* tree-ssa.c (insert_phi_terms): Ditto.
	(delete_refs): Ditto.
	* c-simplify.c (simplify_array_ref): Ditto.
	* simple-break-elim.c: Disable whole file.
	* simple-goto-elim.c: Disable whole file.

2002-06-10  Jason Merrill  <jason@redhat.com>

	* c-simplify.c (simplify_switch_stmt): Let simplify_expr handle
	post-effects.  Reorder.
	(simplify_if_stmt): Likewise.  Don't build redundant comparison.
	(simplify_do_stmt, simplify_while_stmt): Likewise.
	(simplify_for_stmt): Likewise.  Remove POST_P parm.
	(simplify_stmt): Adjust.
	(insert_before_first): #if 0, no longer used.

	* c-pretty-print.c (dump_c_node): Print FIX_TRUNC_EXPR, FLOAT_EXPR
	et al as casts.  Add parens as needed.

	* tree-simple.c (is_union_based_ref): New fn.
	(is_simple_min_lval): Use it.  Rename from is_simple_arraybase.
	(is_simple_arrayref): Adjust.  Use loop instead of recursion.
	(is_simple_compref): Likewise.
	(is_simple_compref_lhs): Remove.
	* tree-simple.h: Adjust.
	* c-simplify.c (simplify_array_ref): Adjust.
	(simplify_component_ref): Adjust.

	* c-simplify.c (simplify_expr_common): Tweak ordering.
	(get_initialized_tmp_var): Let simplify_expr handle post-effects.
	* tree-simple.c (is_simple_stmt): Accept an rhs for a return expr.

	* c-simplify.c (simplify_boolean_expr): Avoid redundant tests.
	Give the temp the appropriate type for a boolean value, and
	reconvert at the end.

	* c-simplify.c (simplify_self_mod_expr): Don't duplicate side-effects.

	* c-simplify.c (simplify_return_stmt): Accept a SIMPLE rhs.
	Just hand off to simplify_expr.

	* c-simplify.c (get_initialized_tmp_var): New fn.
	(simplify_expr_common): Use it.  Handle post-effects internally if
	POST_P is NULL.
	(is_simple_tmp_var): Rename from simple_tmp_var_p.
	* tree-simple.h: Adjust.

2002-06-09  Diego Novillo  <dnovillo@redhat.com>

	* c-simplify.c (simplify_return_stmt): Update folding markers.
	(build_addr_expr): Ditto.
	* langhooks.h (struct langhooks): Document simplify_function_tree
	hook.

2002-06-09  Jason Merrill  <jason@redhat.com>

	* c-simplify.c (simplify_expr_common): Handle creating both lvalue
	and rvalue temps.  Add new parameter to specify which.
	(simplify_expr): Now just a wrapper.
	(simplify_lvalue_expr): Likewise.
	(simplify_expr_either): New wrapper.
	(simplify_component_ref): Use it instead of simplify_lvalue_expr.

	* c-pretty-print.c (debug_c_tree): Add a trailing newline.
	(debug_c_node): Likewise.
	* gdbinit.in (pct): New macro, calls debug_c_tree.

2002-06-08  Jason Merrill  <jason@redhat.com>

	* tree-simple.c (is_simple_unary_expr): Only allow the address of
	a varname.
	(is_simple_id): Allow STRING_CST.
	* c-simplify.c (simplify_expr_common): Split out from simplify_expr.
	Do simplify ADDR_EXPR.
	(simplify_lvalue_expr): Use it and build_addr_expr.  Take
	simple_test_f.
	(simplify_modify_expr): Adjust.
	(build_addr_expr): New fn.
	(simplify_array_ref): Use simplify_lvalue_expr.
	(simplify_component_ref): Likewise.

	* tree-simple.c (is_simple_rhs): Remove condexpr rule.
	(is_simple_compref_lhs): Remove &ID.idlist rule.
	(is_simple_relop): New fn.
	(is_simple_binary_expr, is_simple_condexpr): Use it.
	* tree-simple.h: Declare it.

	* c-simplify.c (create_tmp_var): Refuse to create an array temp.
	(simple_tmp_var_p): New fn.
	(simplify_lvalue_expr): Use it; make sure we don't return a temp.
	* tree-simple.h: Declare it.

	* c-pretty-print.c (dump_c_node) [ARRAY_REF]: Wrap array in parens
	as needed.
	[COMPONENT_REF]: Likewise.
	[POINTER_TYPE]: Fix pointer-to-function handling.
	[ARRAY_TYPE]: Don't try to print an unknown dimension.

	* tree-simple.c (is_simple_arraybase): New function.
	(is_simple_arrayref): Use it to check the array base again.
	* tree-simple.h: Add declaration.
	* c-simplify.c (simplify_array_ref): Do simplify the base.
	* expr.c (expand_expr): First make sure the type has a size.

2002-06-07  Jason Merrill  <jason@redhat.com>

	* cppexp.c (num_equality_op): Use a temporary variable to work
	around gcc 3.0.4 bug.

2002-06-05  Diego Novillo  <dnovillo@redhat.com>

	* Makefile.in (BOOT_CFLAGS): Remove -ftree-ssa.
	* c-decl.c (c_expand_body): Call optimize_function_tree if tree SSA
	is enabled.
	* c-lang.c (LANG_HOOKS_SIMPLIFY_FUNCTION_TREE): Define.
	* c-simplify.c (simplify_tree): Rename to c_simplify_function_tree.
	Update all callers.
	Dump function body before and after simplification if
	-fdump-tree-simple is used.
	(simplify_expr): Document FIXME for simplification of BIT_FIELD_REF
	nodes.
	* c-tree.h (simplify_tree): Rename to c_simplify_function_tree.
	* langhooks-def.h (LANG_HOOKS_SIMPLIFY_FUNCTION_TREE): Define
	(LANGHOOKS_INITIALIZER): Add LANG_HOOKS_SIMPLIFY_FUNCTION_TREE.
	(lhd_simplify_function_tree): Declare.
	* langhooks.c (lhd_simplify_function_tree): New function.
	* langhooks.h (lang_hooks): Add simplify_function_tree function
	pointer.
	* toplev.c (parse_options_and_default_flags): Set flag_tree_ssa to
	1 at optimization levels >= 1.
	Revert to default warning when -Wuninitialized is used without -O.
	* tree-cfg.c (tree_find_basic_blocks): Rename argument 't' to
	'fnbody'.
	* tree-optimize.c: Include langhooks.h.
	(optimize_tree): Rename to optimize_function_tree.  Update all
	users.
	Rename argument 't' to 'fndecl'.
	Call simplify langhook before building SSA.
	(build_tree_ssa): Rename argument 't' to 'fndecl'.
	Adjust call to tree_find_basic_blocks to pass body of the function.
	* tree-optimize.h (optimize_tree): Rename to
	optimize_function_tree.
	* tree-simple.c (is_simple_unary_expr): Document FIXME on
	BIT_FIELD_REF nodes.
	* tree-ssa.c: Add whitespace.
	* testsuite/lib/c-torture.exp: Remove -ftree-ssa flag.

2002-06-03  Daniel Berlin  <dberlin@dberlin.org>

	* tree-cfg.c (insert_before_*):  For insertion into FOR_INIT's, if
	we have an expression statement, transform into a compound
	expression.
	Pick the right place to insert a statement by iterating until we
	have a first_exec_stmt (first_non_decl_stmt) that is really the
	first executable non decl statement.
	(insert_after_*): Ditto.

2002-06-03  Daniel Berlin  <dberlin@dberlin.org>

	* tree-ssa-pre.c: Update BB stuff to new basic block structure.
	Add some comments throughout (more coming, particularly describing
	the algorithm, rather than the implementation).
	(free_expr_info): Free refs as well.
	(defs_y_dom_x): Handle unary expressions as well.
	(insert_euse_in_preorder_dt_order_1): Use block of ref, not block
	of statement.
	Don't insert exit blocks if we hit them before hitting an
	occurrence (it's pointless).
	(rename_2): Return set of phi operands we touched, don't forget to
	free VARRAY's we allocated.
	(rename_1): Correct downsafety computation. Now get exact same
	results as Open64.
	Correct setting of has_real_use.
	(finalize_1): Fix up insertion.
	(code_motion): Fix up insertion.

	* tree-dfa.c (dump_varref):  Improve dumping of expression
	references.

2002-06-03  Diego Novillo  <dnovillo@redhat.com>

	* tree-cfg.c (delete_bb): Rename to tree_delete_bb.  Update callers.
	(tree_find_basic_blocks): Initializer last_basic_block.
	(create_bb): Update last_basic_block after creating a new block.
	(tree_cleanup_cfg): Delete unreachable blocks by traversing the
	linked list, not the array.  Update comments.
	(delete_bb): Update comments.
	(tree_dump_cfg): Also show last_basic_block.
	* tree-ssa.c (tree_build_ssa): Use last_basic_block instead of
	n_basic_blocks to allocate dominator arrays.
	(insert_phi_terms): Ditto.
	(search_fud_chains): User FOR_EACH_BB to look for dominator
	children.

2002-05-29  Diego Novillo  <dnovillo@redhat.com>

	* tree-cfg.c (tree_find_basic_blocks): Set next_bb and prev_bb for
	ENTRY_BLOCK_PTR and EXIT_BLOCK_PTR.
	(create_bb): Set flag BB_NEW for every newly created block.
	Call link_block to add the new block to the linked list.
	(tree_split_bb): Traverse basic blocks using FOR_EACH_BB.
	(make_goto_stmt_edges): Ditto.
	(remove_unreachable_blocks): Add reminder comment to stop
	compacting the basic block array every time a block is deleted.
	(delete_cfg): Traverse basic blocks using FOR_EACH_BB.
	(tree_dump_bb): Ditto.
	(tree_dump_cfg): Ditto.
	(tree_cfg2dot): Ditto.
	* tree-dfa.c (tree_find_varrefs): Ditto.
	(create_tree_ann): Ditto.
	(get_fcalls): Ditto.
	(find_declaration): Ditto.
	* tree-ssa.c (tree_build_ssa): Ditto.

2002-05-28  Diego Novillo  <dnovillo@redhat.com>

	* Makefile.in: Add -ftree-ssa to BOOT_CFLAGS.

2002-05-27  Diego Novillo  <dnovillo@redhat.com>

	* c-decl.c (c_expand_body): Close dump file before simplifying the
	function.
	* c-pretty-print.c (dump_c_node): Handle COMPLEX_CST,
	BIT_FIELD_REF, COMPLEX_EXPR, CONJ_EXPR, REALPART_EXPR,
	IMAGPART_EXPR and VA_ARG_EXPR nodes.
	Display all type casts, not just pointer casts.
	(op_prio): Handle LROTATE_EXPR, RROTATE_EXPR, REALPART_EXPR and
	IMAGPART_EXPR.
	* c-simplify.c: Include "tree-inline.h"
	(dump_file): New local variable.
	(dump_flags): New local variable.
	(stmt_expr_level): New local variable.
	(simplify_tree): Open and close dump file if
	-fdump-tree-simple-details is given.
	Initialize stmt_expr_level.
	(simplify_stmt): Dump statement before and after simplification if
	-fdump-tree-simple-detail is given.
	Unshare the expression of an EXPR_STMT before simplifying it.
	Call simplify_return_stmt to handle RETURN_STMT nodes.
	Do not simplify DECL_STMT nodes.
	Call stmt_has_effect before re-chaining side effects.
	(simplify_for_stmt): Do not return the simplified statement.
	Update all callers.
	Simplify FOR_BODY after the headers.
	Unshare loop header expressions before simplification.
	(simplify_while_stmt): Do not return the simplified statement.
	Update all callers.
	Simplify WHILE_BODY after the headers.
	Unshare the loop header expression before simplification.
	(simplify_do_stmt): Do not return the simplified statement.  Update
	all callers.
	Unshare the loop header expression before simplification.
	(simplify_if_stmt): Do not return the simplified statement.  Update
	all callers.
	Simplify the condition expression before the clauses.
	Unshare the condition expression before simplification.
	(simplify_switch_stmt): Do not return the simplified statement.
	Update all callers.
	Simplify the switch expression before the body.
	Unshare the switch expression before simplification.
	(simplify_decl_stmt): Remove.
	(simplify_expr): Remove argument 'needs_lvalue'.
	Add argument 'stmt'.
	Replace first argument 'expr' with a pointer to the
	expression 'expr_p'.
	Do not return the simplified expression.
	Update all callers and uses.
	Handle TRUTH_NOT_EXPR nodes.  Simplify SAVE_EXPR nodes into a
	SIMPLE id and remove the SAVE_EXPR node.
	Do not simplify BIT_FIELD_REF nodes.
	Remove code that tried to create new lvalues.
	(simplify_array_ref): Replace first argument 'expr' with a pointer
	to the expression 'expr_p'.
	Do not return the simplified expression.
	Add argument 'stmt'.
	Update all callers and uses.
	(simplify_self_mod_expr): Replace first argument 'expr' with a
	pointer to the expression 'expr_p'.
	Do not return the simplified expression.
	Add argument 'stmt'.
	Update all callers and uses.
	Call simplify_lvalue_expr to simplify a copy of the LHS into an
	lvalue for the new assignment.
	Simplify the new binary expression.
	(simplify_component_ref): Replace first argument 'expr' with a
	pointer to the expression 'expr_p'.
	Do not return the simplified expression.
	Add argument 'stmt'.
	Update all callers and uses.
	(simplify_call_expr): Ditto.
	(simplify_tree_list): Ditto.
	(simplify_cond_expr): Ditto.
	Build a replacement IF_STMT and call simplify_if_stmt() to process
	it.  Set the line number of the new statement from the statement
	containing the original expression.
	(simplify_modify_expr): Replace first argument 'expr' with a
	pointer to the expression 'expr_p'.
	Do not return the simplified expression.
	Add argument 'stmt'.
	Update all callers.
	Call simplify_lvalue_expr to simplify the LHS of the assignment.
	(simplify_boolean_expr): Replace first argument 'expr' with a
	pointer to the expression 'expr_p'.
	Do not return the simplified expression.
	Add argument 'stmt'.
	Update all callers.
	Build a new IF_STMT and simplify it all at once by calling
	simplify_if_stmt.
	(simplify_compound_expr): Replace first argument 'expr' with a
	pointer to the expression 'expr_p'.
	Do not return the simplified expression.
	Add argument 'stmt'.
	Update all callers.
	(simplify_expr_wfl): Ditto.
	(simplify_lvalue_expr): New function.
	(add_tree): Create a copy of each expression before adding it to
	the list.
	(deep_copy_node): Call copy_tree_r to copy expression nodes.
	(stmt_has_effect): Return nonzero if the statement may be the last
	statement of a statement expression body.
	(mostly_copy_tree_r): New function.
	* tree-dump.c (dump_options): Add 'details'.
	* tree-simple.c: Update documentation about ADDRESSOF expressions.
	(is_simple_stmt): Test for SIMPLE values when checking return
	statements.
	Accept all DECL_STMT nodes.
	(is_simple_compstmt): Return nonzero if T is NULL.  Do not test
	DECL_STMT nodes
	(is_simple_expr): Return nonzero if T is NULL.
	(is_simple_rhs): Ditto.
	(is_simple_modify_expr): Ditto.
	(is_simple_modify_expr_lhs): Ditto.
	(is_simple_binary_expr): Ditto.
	(is_simple_cond_expr): Ditto.
	(is_simple_unary_expr): Call STRIP_NOPS before testing T.
	Always accept ADDR_EXPR nodes.
	Always accept BIT_FIELD_REF nodes.
	(is_simple_call_expr): Return nonzero if T is NULL.
	(is_simple_const): Ditto.
	(is_simple_val): Ditto.
	(is_simple_compref): Ditto.
	(is_simple_compref_lhs): Ditto.
	(is_simple_cast): Ditto.
	(is_simple_cast_op): Ditto.
	(is_simple_id): Return nonzero if T is NULL.  Allow identifiers
	wrapped inside NON_LVALUE_EXPR and EXPR_WITH_FILE_LOCATION nodes.
	Allow real and imaginary parts of a complex variable.
	Allow compound literals.
	(is_simple_arrayref): Allow arrays of complex types.
	* tree.h (TDF_DETAILS): Define.
	* cp/pt.c (tsubst_template_parms): Check that 'parms' is non-NULL
	before calling TMPL_PARMS_DEPTH.
	* doc/invoke.texi: Document -fdump-tree-simple-details.

2002-05-10  Daniel Berlin  <dberlin@dberlin.org>

	* c-pretty-print.c (dump_c_node): Print "<unnamed whatever>" for
	types, variables, etc that have no name, rather than printing
	nothing.
	Handle PMF's properly.
	Print out structure initializers in a somewhat sensible way.
	Print SAVE_EXPR () around SAVE_EXPRs.
	(print_call_name): Handle EXPR_WITH_FILE_LOCATION.

2002-05-09  Daniel Berlin  <dberlin@dberlin.org>

	* tree-dfa.c (dump_varref): Tree inlining generates variables with
	no name. Don't crash on dumping varref's of them.

	* tree-inline.c (expand_call_inline): Generate a proper STMT_EXPR
	(it was missing COMPOUND_STMT).

2002-05-08  Daniel Berlin  <dberlin@dberlin.org>

	s/varref_type/treeref_type/g
	s/create_varref/create_ref/g

	* tree-flow.h: Add EXPRPHI, EXPRUSE, EXPRKILL, EXPRINJ.
	Add structures and macros for each.
	Add tree_perform_ssapre prototype.

	* Makefile.in (C_AND_OBJC_OBJS): Add tree-ssa-pre.o
	(tree-ssa-pre.o): Add dependencies for tree-ssa-pre.o

	* cp/Make-lang.in: Add tree-ssa-pre.o

	* flags.h: Add flag_tree_ssa_pre.

	* tree-ssa-pre.c: New file, SSA-PRE.

	* toplev.c: Add flag_tree_ssa_pre.
	(lang_independent_options): Add tree-ssa-pre.

	* tree-dump.c (dump_files): Add ssapre dump.

	* tree-optimize.c (optimize_tree): Do SSAPRE if requested.

	* tree.h (dump_index): Add TDI_ssa_pre.

	* tree-dfa.c (create_ref): Add support for creating the EXPR*'s refs.
	(dump_varref): Add support for dumping EXPR* refs.

	* tree-ssa.c (search_fud_chains): Add BB to VARDEF_PHI_CHAIN_BB.

2002-05-07  Diego Novillo  <dnovillo@redhat.com>

	* c-pretty-print.c (op_prio): Handle ABS_EXPR.
	Don't abort when the operand is not recognized.
	(op_symbol): Don't abort when the operand is not recognized.
	* c-simplify.c (simplify_expr): Remove 'const' qualifier from first
	argument.
	Do not copy incoming expression.
	Exclude handling of MODIFY_EXPR, INIT_EXPR, SAVE_EXPR and binary
	expression nodes.
	(simplify_array_ref): Remove 'const' qualifier from first argument.
	Do not copy the incoming expression.
	(simplify_self_mod_expr): Ditto.
	Do not simplify the first operand twice.
	(simplify_component_ref): Remove 'const' qualifier from first
	argument.  Do not copy the incoming expression.
	(simplify_call_expr): Ditto.
	(simplify_tree_list): Ditto.
	(simplify_cond_expr): Ditto.
	(simplify_modify_expr): Ditto.
	(simplify_boolean_expr): Ditto.
	(simplify_compound_expr): Ditto.
	(simplify_save_expr): Ditto.
	(simplify_expr_wfl): Ditto.
	(tree_build_scope): Re-write.  Do nothing if block already contains
	a scope.  Use chainon to chain the body with the scope closing
	node.
	(deep_copy_node): Do not check for NULL nodes.  Do not deep copy
	declarations, types and constants.

2002-05-06  Daniel Berlin  <dberlin@dberlin.org>

	* c-simplify.c (deep_copy_node): Don't copy DECL_STMT_DECL's.

2002-05-06  Daniel Berlin  <dberlin@dberlin.org>

	* tree-simple.c (is_simple_compstmt): Don't post-initialize
	statics or aggregate initializers.

	* c-simplify.c (simplify_decl_stmt): Ditto.

2002-05-06  Sebastian Pop  <s.pop@laposte.net>

	* Makefile.in (simple-break-elim.o, simple-goto-elim.o, tree-dchain.o):
	Added.
	* c-decl.c: Include tree-dchain.h
	(c_expand_body): Add entry point to the goto, break elimination
	after the simplification pass.
	* simple-break-elim.c: New file.
	* simple-goto-elim.c: New file.
	* tree-dchain.h: New file.
	* tree-dchain.c: New file.

2002-05-02  Diego Novillo  <dnovillo@redhat.com>

	* c-simplify.c (simplify_expr): Constify first argument.
	Always work on a copy of the input expression.
	Do not simplify COMPOUND_LITERAL_EXPR nor CONSTRUCTOR nodes.
	(simplify_array_ref): Constify first argument.  Always work on a
	copy of the input expression.
	(simplify_self_mod_expr): Ditto.
	(simplify_component_ref): Ditto.
	(simplify_call_expr): Ditto.
	(simplify_tree_list): Ditto.
	(simplify_cond_expr): Ditto.
	When building the THEN_CLAUSE and ELSE_CLAUSE for the new IF_STMT,
	create a scope for them and simplify the scope, not the expression.
	(simplify_modify_expr): Constify first argument.  Always work on a
	copy of the input expression.
	(simplify_boolean_expr): Ditto.
	(simplify_compound_expr): Ditto.
	(simplify_save_expr): Ditto.
	(simplify_expr_wfl): Ditto.
	* tree-cfg.c (tree_find_basic_blocks): Update comments for
	-fdump-tree-dot.
	(tree_dump_cfg): Ditto.
	* tree-dump.c (dump_files): Rename -fdump-tree-graphviz to
	-fdump-tree-dot.
	* tree-simple.c (is_simple_unary_expr): Do not handle &CONST
	expressions.
	Handle COMPOUND_LITERAL_EXPR and CONSTRUCTOR nodes.
	(is_simple_const): Strip NOPS and handle &CONST expressions.
	* tree.h (enum tree_dump_index): Remove references to GraphViz.
	* doc/invoke.texi: Update documentation for -fdump-tree-dot.

2002-05-02  Sebastian Pop  <s.pop@laposte.net>

	* c-pretty-print.c (dump_c_node): Don't print declarations
	from the SCOPE_STMT_BLOCK, use the DECL_STMT instead.

2002-04-30  Diego Novillo  <dnovillo@redhat.com>

	* c-pretty-print.c (NIY): Display an error string instead of aborting.
	(op_prio): Add support for COMPOUND_EXPR, TRUTH_XOR_EXPR, MIN_EXPR,
	MAX_EXPR and NON_LVALUE_EXPR.
	For EXPR_WITH_FILE_LOCATION nodes, return the priority of
	the internal node.
	(op_symbol): Add support for TRUTH_XOR_EXPR.
	* c-simplify.c (simplify_stmt): Only remove null statements that
	have been nullified by simplification.
	Call debug_tree() dump unhandled tree nodes.
	(simplify_for_stmt): Always deep-copy PRE_COND_S before adding it
	to PRE_P.
	(simplify_expr): When simplifying a MODIFY_EXPR node into an
	rvalue, return operand 0.
	Handle VA_ARG_EXPR, BIT_FIELD_REF and NON_LVALUE_EXPR nodes.
	Treat TRUTH_AND_EXPR, TRUTH_OR_EXPR and TRUTH_XOR_EXPR nodes as
	regular binary expressions.
	Call debug_tree() to dump an unhandled expression.
	(simplify_array_ref): Do not simplify the base of an array.
	(simplify_call_expr): Do not simplify calls to builtins.
	(simplify_cond_expr): Handle conditional expressions of type void.
	(simplify_boolean_expr): Return 'T != 0' instead of 'T'.
	(simplify_save_expr): Do not wrap statement trees inside SAVE_EXPR
	nodes.
	(tree_last_decl): Ignore FILE_STMT nodes preceding a SCOPE_STMT.
	* tree-simple.c: Update grammar to accept any valid C array as the
	array base.
	(is_simple_compstmt): Accept DECL_INITIAL expressions for read-only
	variables.
	(is_simple_expr): Do not abort if the incoming tree is NULL.
	(is_simple_modify_expr): Allow SAVE_EXPR, EXPR_WITH_FILE_LOCATION
	and NON_LVALUE_EXPR wrappers.
	(is_simple_binary_expr): Ditto.
	(is_simple_condexpr): Ditto.
	Accept TRUTH_AND_EXPR, TRUTH_OR_EXPR and TRUTH_XOR_EXPR.
	(is_simple_unary_expr): Do not abort it the incoming tree is NULL.
	Allow SAVE_EXPR, EXPR_WITH_FILE_LOCATION and NON_LVALUE_EXPR
	wrappers.
	Handle BIT_FIELD_REF and VA_ARG_EXPR nodes.
	(is_simple_call_expr): Always return 1 for builtin calls.
	(is_simple_arrayref): Do not check the array base.

2002-04-30  Daniel Berlin  <dberlin@dberlin.org>

	* c-simplify.c (simplify_call_expr): Don't try to simplify
	call_expr arglist if it's not there.

2002-04-27  Diego Novillo  <dnovillo@redhat.com>

	* c-decl.c (c_expand_body): Call simplify_tree to simplify a
	FUNCTION_DECL node.
	* c-simplify.c (simplify_tree): New function.
	(simplify_stmt): Remove variable 'new_vars'.  Update all called
	functions.
	Remove argument 'scope'.  Update all callers.
	Do not keep track of new scope statements as they are entered.
	Do not call declare_tmp_vars().
	(simplify_for_stmt): Remove argument new_vars_p.  Update all callers.
	(simplify_while_stmt): Ditto.
	(simplify_do_stmt): Ditto.
	(simplify_if_stmt): Ditto.
	(simplify_switch_stmt): Ditto.
	(simplify_decl_stmt): Reformat comments.
	(simplify_expr): Remove argument new_vars_p.  Update all callers.
	Call simplify_save_expr() to simplify SAVE_EXPR nodes.
	Call simplify_expr_wfl() to simplify EXPR_WITH_FILE_LOCATION nodes.
	Do not call is_unop() and is_binop() when checking for unary and
	binary operators.
	Do not return early after simplify statement-expressions.
	Do not call add_modify_stmt() to create assignment expressions.
	(simplify_array_ref): Remove argument new_vars_p.  Update all callers.
	(simplify_self_mod_expr): Ditto.
	(simplify_component_ref): Ditto.
	(simplify_call_expr): Ditto.
	(simplify_tree_list): Ditto.
	(simplify_cond_expr): Ditto.
	(simplify_modify_expr): Ditto.
	(simplify_boolean_expr): Ditto.
	(simplify_compound_expr): Ditto.
	(simplify_save_expr): New function.
	(simplify_expr_wfl): New function.
	(tree_build_scope): Reformat.
	(add_tree): Call stmt_has_effect() and expr_has_effect() to decide
	whether or not to add a new tree to the list.
	(add_modify_stmt): Remove.
	(create_tmp_var): Remove 'new_vars_p' argument.
	Call pushdecl() to insert the newly created variable in the current
	binding scope.
	(declare_tmp_vars): Do not create a BLOCK_VARS for the scope.
	(is_binop): Remove.
	(is_unop): Remove.
	(expr_has_effect): New function.
	* c-tree.h (simplify_tree): Remove second argument.
	* stmt.c (warn_if_unused_value): Check operand 0 of SAVE_EXPR
	nodes.
	* tree-dfa.c (find_refs_in_expr): Call find_refs_in_expr() to look
	inside an EXPR_WITH_FILE_LOCATION node.
	* tree-simple.c (is_simple_stmt): Add a case for SCOPE_STMT nodes.
	(is_simple_compstmt): Assume that T is the first tree in the
	compound statement's body.
	Stop when a scope ending SCOPE_STMT node is found.
	(is_simple_binary_expr): Don't call is_simple_binop().
	(is_simple_condexpr): Don't call is_simple_relop().
	(is_simple_binop): Remove.
	(is_simple_relop): Remove.
	(is_simple_unary_expr): Accept any operator with tree code class
	'1' followed by a simple value.
	Accept simple unary expressions wrapped inside SAVE_EXPR,
	EXPR_WITH_FILE_LOCATION and NON_LVALUE_EXPR nodes.
	(is_simple_id): Accept simple identifiers wrapped inside SAVE_EXPR,
	EXPR_WITH_FILE_LOCATION and NON_LVALUE_EXPR nodes.
	* tree-simple.h (create_tmp_var): Remove second argument.
	(is_simple_binop): Remove.
	(is_simple_relop): Remove.

2002-04-22  Diego Novillo  <dnovillo@redhat.com>

	* c-simplify.c (stmt_has_effect): New function.
	(simplify_stmt): Fix example code in comment.
	Use EXPR_STMT_EXPR to access the expression in an expression
	statement.
	Call debug_c_node to display unhandled statements.
	Call stmt_has_effect to determine whether the statement has been
	nullified by the simplification process.
	(simplify_for_stmt): Do not simplify the initialization expression
	if it's NULL.
	Do not convert post_cond_s into a statement chain.
	Do not simplify the expression if it's NULL.
	(simplify_switch_stmt): initialize post_cond_s to NULL before
	simplifying the expression.
	(simplify_expr): Rename argument IS_LHS to NEEDS_LVALUE.  Update
	all uses.
	When simplifying assignments, return the LHS of the assignment if
	the caller wants to use the assignment as an rvalue.
	Do not simplify ADDR_EXPR nodes.
	Handle NOP_EXPR, CONVERT_EXPR, FIX_TRUNC_EXPR, FIX_CEIL_EXPR,
	FIX_ROUND_EXPR, INDIRECT_REF, NEGATE_EXPR, INTEGER_CST, STRING_CST,
	COMPLEX_CST.
	Abort if the expression has not been simplified and cannot be used
	as an rvalue to assign it to a temporary.
	When creating a new temporary to hold an lvalue, if the expression
	is an indirect reference, use the address of the referenced object.
	When creating an indirect reference, use the pointed-to type as the
	type of the reference.
	(simplify_self_mod_expr): If the LHS operand needs to be
	simplified, simplify twice.  Once to produce an lvalue and another
	to produce a simple value.
	(simplify_modify_expr): Break assignment chains (a = b = c = ...)
	into individual assignments.
	(simplify_compound_expr):
	(create_tmp_var): If the type is an array, use TYPE_POINTER_TO as
	the pointer type.
	(update_line_number): Fix typo in comment.
	(is_unop): Ditto.
	(convert_to_stmt_chain): Only add statements that comply with
	stmt_has_effect().
	* tree-dfa.c (find_declaration): Fix typo in comment.
	(debug_varref): Ditto.
	* tree-flow.h: Ditto.
	* tree-simple.c (is_simple_stmt): New function.
	(is_simple_compstmt): New function.
	(is_simple_expr): Fix typo in comment.
	(is_simple_rhs): Allow conditional expressions.
	(is_simple_modify_expr): Fix typo in comment.
	(is_simple_modify_expr_lhs): Ditto.
	(is_simple_binary_expr): Ditto.
	(is_simple_condexpr): Ditto.
	(is_simple_relop): Ditto.
	(is_simple_unary_expr): Ditto.
	Allow taking the address of a constant (for strings).
	(is_simple_call_expr): Fix typo in comment.
	Call is_simple_id to determine if the first operand is a SIMPLE
	function identifier.
	(is_simple_arglist): Fix typo in comment.
	(is_simple_varname): Ditto.
	(is_simple_const): Don't accept casts of SIMPLE constants.
	(is_simple_id): Don't accept casts of SIMPLE identifiers.
	(is_simple_val): Fix typo in comment.
	(is_simple_arrayref): Ditto.
	(is_simple_compref): Ditto.
	(is_simple_compref_lhs): Ditto.
	(is_simple_cast_op): Ditto.
	(is_simple_exprseq): Allow NULL expression sequences.
	* tree-simple.h (is_simple_stmt): Declare
	(is_simple_compstmt): Declare.
	* tree-ssa.c (follow_chain): Fix typo in comment.

2002-04-22  Diego Novillo  <dnovillo@redhat.com>

	* c-pretty-print.c (dump_c_node): Don't print function
	bodies of FUNCTION_DECL nodes.

2002-04-19  Andreas Jaeger  <aj@suse.de>

	* Makefile.in (c-call-graph.o): New.

2002-04-18  Sebastian Pop  <s.pop@laposte.net>

	* c-pretty-print.c (PRINT_FUNCTION_NAME): Define.
	(dump_c_node): Call pretty_print_string to print string.
	Call print_call_name to print function names.
	(pretty_print_string): New function.
	(print_call_name): New function.

2002-04-17  Diego Novillo  <dnovillo@redhat.com>

	* c-simplify.c (simplify_do_stmt): Call is_simple_condexpr to test
	if the conditional is in SIMPLE form.
	(simplify_if_stmt): Ditto.

2002-04-17  Diego Novillo  <dnovillo@redhat.com>

	* c-pretty-print.c (dump_c_node): Handle escape sequences in strings.
	(op_symbol): Handle TRUTH_NOT_EXPR.
	* c-simplify.c: Rename 'after' with 'post' and 'before' with 'pre'
	everywhere.
	Re-group some functions and add comments.
	(simplify_stmt): Update calls to simplify_for_stmt,
	simplify_while_stmt, simplify_do_stmt and simplify_switch_stmt.
	Call simplify_if_stmt.
	Do not test if expression is in SIMPLE form before calling
	simplify_expr.
	Call convert_to_stmt_chain to emit statement trees for side effects
	found while simplifying.
	(simplify_for_stmt): Re-implement.  Do not change structure of the
	statement.  Simplify each header expression and emit side effects
	at sequence points.
	(simplify_while_stmt): Ditto.
	(simplify_do_stmt): Ditto.
	(simplify_switch_stmt): Ditto.
	(new_simplified_if): Rename to simplify_if_stmt.
	Call simplify_expr to simplify the conditional.
	(simplify_if_stmt): New name for new_simplified_if.
	(simplify_expr): Do not default simple_test_f to is_simple_expr.
	If simple_test_f is not set, abort.
	Handle COMPOUND_EXPR, MODIFY_EXPR, TRUTH_ANDIF_EXPR,
	TRUTH_ORIF_EXPR, SAVE_EXPR and EXPR_WITH_FILE_LOCATION.
	(simplify_arglist): Rename to simplify_tree_list.
	(simplify_tree_list): New name for simplify_arglist.
	(simplify_boolean_expr): New function.
	(simplify_compound_expr): New function.
	(tree_build_scope): Use SCOPE_BEGIN_P instead of TREE_LANG_FLAG_0
	to access scope operands.  Use COMPOUND_BODY instead of
	TREE_OPERAND to access the body of the compound statement.
	(add_tree): Use a TREE_LIST container instead of directly chaining the
	trees.
	(add_assignment_tree): Rename to add_modify_stmt.  Update all
	callers.
	(add_modify_stmt): New name for add_assignment_tree.
	(insert_before_continue_end): Do nothing it the tree to insert is
	NULL.
	(copy_stmt_chain): Rename to deep_copy_list.  Update all callers.
	(deep_copy_list): New name for copy_stmt_chain.
	(copy_stmt): Rename to deep_copy_node.  Update all callers.
	(deep_copy_node): New name for copy_stmt.  Handle TREE_LIST
	trees.
	(insert_before_first): New function.
	(is_binop): Add COMPOUND_EXPR.
	(convert_to_stmt_chain): New function.
	* tree-cfg.c (make_for_stmt_blocks): Fix comment.
	* tree-simple.c (is_simple_condexpr): New function.
	(is_simple_const): Allow casts of SIMPLE constants.
	(is_simple_id): Allow casts of SIMPLE identifiers.
	(is_simple_cast): Call is_simple_cast_op.
	(is_simple_cast_op): New function.
	(is_simple_exprseq): New function.
	* tree-simple.h (deep_copy_list): Declare.
	(deep_copy_node): Declare.
	(is_simple_cast_op): Declare.
	(is_simple_exprseq): Declare.

2002-04-03  Diego Novillo  <dnovillo@redhat.com>

	* c-simplify.c (simplify_expr): Add arguments simple_tree_f and
	is_lhs.  Update all callers.
	Call simplify_call_expr, simplify_cond_expr, simplify_arglist and
	simplify_modify_expr.
	Call is_unop and is_binop to check for unary and binary operators.
	(simplify_binary_expr): Remove.
	(simplify_call_expr): New function.
	(simplify_arglist): New function.
	(simplify_cond_expr): New function.
	(simplify_modify_expr): New function.
	(keep_stmt_p): Remove.
	(is_binop): New function.
	(is_unop): New function.
	(simplify_stmt): Don't call keep_stmt_p.
	(simplify_decl_stmt): Call add_assignment_tree.
	* tree-simple.c: Include c-tree.h
	Add expression-statements to the SIMPLE grammar.
	(is_simple_modify_expr_lhs): New function.
	(is_simple_modify_expr): Call it.
	(is_simple_relop): Update comment.
	(is_simple_unary_expr): Allow expression-statements.
	(is_simple_arglist): New function.
	(is_simple_call_expr): Call it.
	(is_simple_id): Accept expressions taking the address of a
	function.
	* tree-simple.h (is_simple_modify_expr_lhs): Declare.
	(is_simple_arglist): Declare.

2002-03-21  Diego Novillo  <dnovillo@redhat.com>

	* Makefile.in (c-simplify.o): Add dependency on varray.h.
	* c-simplify.c: Include varray.h.
	Remove comments with SIMPLE grammar.
	(simplify_array_ref): New.
	(simplify_self_mod_expr): New.
	(simplify_component_ref): New.
	(add_assignment_tree): New.
	(simplify_expr): Call simplify_array_ref to simplify array
	references.
	Call simplify_self_mod_expr to simplify ++, --, += and -=
	expressions.
	Call simplify_component_ref to simplify references to structures.
	(simplify_binary_expr): Do not check whether the expression is
	already in SIMPLE form.
	* tree-simple.c: Document changes from original SIMPLE grammar.
	(is_simple_unary_expr): Add check for *ID.
	(is_simple_call_expr): Update comments.
	(is_simple_const): Ditto.
	(is_simple_id): Do not accept *ID expressions.
	(is_simple_val): Update comments.
	(is_simple_arrayref): Accept any variable name as the base address.
	(is_simple_compref_lhs): New.
	(is_simple_compref): Call it.
	* tree-simple.h (is_simple_compref_lhs): Declare.

2002-03-18  Diego Novillo  <dnovillo@redhat.com>

	* Makefile.in (C_AND_OBJC_OBJS): Add tree-simple.o
	(tree-simple.o): New rule.
	* c-simplify.c (simplified_p): Remove.
	(simplified_rec_p): Remove.
	(simplified_condition_p): Remove.
	(simplify_for_stmt): Call is_simple_expr instead of
	simplified_condition_p.
	(simplify_while_stmt): Ditto.
	(simplify_do_stmt): Call is_simple_expr instead of simplified_p.
	(new_simplified_if): Call is_simple_expr instead of
	simplified_rec_p.
	(simplify_decl_stmt): Update comment.
	(simplify_expr): Return the original expression if it's already
	in SIMPLE form.
	Do not special case most binary and unary expressions.
	When simplifying array references, create temporary variables to
	hold the base address for the array.
	Simplify COMPONENT_REF expressions separately.
	Call simplify_binary_expr to handle most binary expressions.
	(simplify_binary_expr): New function.
	(keep_stmt_p): Call is_simple_unary_expr to determine whether the
	statement should be kept or not.
	* tree-simple.c: New file.
	* tree-simple.h (is_simple_expr): Declare.
	(is_simple_rhs): Declare.
	(is_simple_modify_expr): Declare.
	(is_simple_binary_expr): Declare.
	(is_simple_binop): Declare.
	(is_simple_relop): Declare.
	(is_simple_unary_expr): Declare.
	(is_simple_call_expr): Declare.
	(is_simple_const): Declare.
	(is_simple_id): Declare.
	(is_simple_varname): Declare.
	(is_simple_val): Declare.
	(is_simple_arrayref): Declare.
	(is_simple_compref): Declare.
	(is_simple_cast): Declare.
	* cp/Make-lang.in (CXX_C_OBJS): Add tree-simple.o

2002-03-18  Diego Novillo  <dnovillo@redhat.com>

	* tree-simple.h: New file.
	* Makefile.in (c-simplify.o): Add dependency on tree-simple.h
	* c-simplify.c: Reformat some comments.
	(tree_last_decl): Declare.

2002-03-18  Sebastian Pop  <s.pop@laposte.net>

	* c-simplify.c (insert_stmt_chain): Delete.
	(simplified_condition_p, insert_after_case_labels): New.
	(simplify_stmt, simplify_for_stmt, simplify_while_stmt,
	simplify_do_stmt, new_simplified_if, simplify_switch_stmt):
	Returns a single node, generate a chain of statements to be executed
	before the if, and a list of new variables.
	(new_simplified_if): Simplify clauses.
	(simplify_expr): Remove unused parameter scope.

2002-03-14  Sebastian Pop  <s.pop@laposte.net>

	* c-simplify.c (simplify_switch_stmt, simplify_expr): Add scope
	parameter.
	(simplify_while_stmt, simplify_do_stmt, simplify_for_stmt): Avoid
	negating loop condition during simplification.
	(new_simplified_if): Don't simplify the IF_BODY.
	(copy_stmt_chain): Use copy_stmt.
	(copy_stmt): New function.

2002-02-28  Sebastian Pop  <s.pop@laposte.net>

	* tree-dfa.c (find_refs_in_stmt): Changed if/else statements in
	a switch.

2002-02-28  Sebastian Pop  <s.pop@laposte.net>

	* c-simplify.c (simplify_if_stmt): Deleted.
	(new_simplified_if): New function.
	(make_type_writable): New function.
	(insert_before_continue_end): New function.
	(insert_before_continue): New function.
	(copy_stmt_chain): New function.
	(insert_stmt_chain): New function.
	(update_line_number): New function.
	(simplified_p): New function.
	(simplified_rec_p) New function.
	(simplify_stmt): Modify the way to call simplification
	of COMPOUND_STMT, FOR_STMT, WHILE_STMT, DO_STMT, IF_STMT,
	and SCOPE_STMT in order to avoid to execute the code after
	the switch.  Add FILE_STMT, LABEL_STMT, GOTO_STMT, ASM_STMT cases.
	Simplified a little the code after the switch.
	(simplify_for_stmt): Change functions parameters.
	Add code to simplify the FOR_INIT_STMT, FOR_COND, FOR_EXPR.
	(simplify_while_stmt): Change functions parameters.
	Add code to simplify the WHILE_COND.
	(simplify_do_stmt): Change functions parameters.
	Add code to simplify the DO_COND.
	(simplify_switch_stmt): Change functions parameters.
	(simplify_expr): Remove scope parameter.
	Avoid to introduce a new temporary variable for an expression
	that is already simplified.
	([ARRAY|COMPONENT]_REF, COND_EXPR): Handle them apart.
	(TRUTH_ANDIF_EXPR, TRUTH_ORIF_EXPR): Avoid to evaluate the second
	operand if the value can be deduced from the first one.
	(keep_stmt_p): Add some other cases in which we don't need to keep
	a statement after its simplification.

2002-02-28  Sebastian Pop  <s.pop@laposte.net>

	* Makefile.in: Add c-call-graph.o dependence.
	* c-call-graph.c: New file.
	* c-decl.c (c_expand_body): Add an entry point for call-graph.
	* tree-dump.c (dump_files): Add the flag dump-call-graph.
	* tree.h (tree_dump_index): Add TDI_xml.

2002-02-28  Sebastian Pop  <s.pop@laposte.net>

	* c-pretty-print.c (dump_c_tree): Declare it extern.
	(dump_c_node): Declare it extern.
	(dump_c_scope_vars): Deleted, some code moved in print_declaration ().
	(print_declaration): New function.
	(print_function_decl): New function.
	(print_struct_decl): New function.
	(INDENT_PRINT_C_NODE): Deleted.
	(INDENT): New macro.
	(NIY): Define the macro body in a block.
	(dump_c_node): Add dumping for TREE_PURPOSE operand in TREE_LIST.
	[VOID|INTEGER|REAL|COMPLEX|VECTOR|ENUMERAL|BOOLEAN|CHAR]_TYPE nodes:
	insert some code from print-tree.c:print_node_brief () in order to
	stabilise the type printing.
	[RECORD|UNION]_TYPE nodes: Don't print their contents by default,
	move the existing code in print_struct_decl ().
	[POSTDECREMENT|POSTINCREMENT]_EXPR: Print the operand in post postion.
	[MIN|MAX|ABS]_EXPR: New code for printing these nodes.
	FOR_STMT: Don't print the FOR_BODY if it is not present.
	RETURN_STMT: Don't print the return expression for a void function.
	ASM_STMT: New code for printing this node.
	SCOPE_STMT: Use print_declaration instead of dump_c_scope_vars.
	COMPOUND_LITERAL_EXPR: Add the node as not implemented yet.
	(op_prio): Fix switch indent.
	Add node EXPR_WITH_FILE_LOCATION with priority 16.
	(op_symbol): Fix switch indent.

2002-01-25  Diego Novillo  <dnovillo@redhat.com>

	* Makefile.in (c-pretty-print.o): Add dependency on errors.h.
	* c-decl.c (c_expand_body): React to -ftree-dump-simple.
	* c-pretty-print.c: Fix typo in header comment.
	(NYI): Flush output buffer, dump the tree and abort.
	(dump_c_node): Add unparsing code for ERROR_MARK, IDENTIFIER_NODE,
	ARRAY_TYPE, UNION_TYPE, STRING_CST, CEIL_DIV_EXPR, FLOOR_DIV_EXPR,
	ROUND_DIV_EXPR, TRUNC_MOD_EXPR, FLOOR_MOD_EXPR, ROUND_MOD_EXPR,
	RDIV_EXPR, EXACT_DIV_EXPR, LROTATE_EXPR, RROTATE_EXPR,
	BIT_ANDTC_EXPR, BIT_NOT_EXPR, UNORDERED_EXPR, SAVE_EXPR and
	EXPR_WITH_FILE_LOCATION.
	Unify unparsing code for common binary and unary expressions.
	Handle indirect references like any other unary expression.
	(dump_c_scope_vars): Remove unused variable 'context'.
	Call dump_c_node to print the type.
	(dump_c_indirect_ref): Remove.
	(op_prio): New function.
	(op_symbol): New function.
	* c-simplify.c (simplify_stmt): Do not simplify a return
	expression, only its second operand.
	Fix capitalization in error message.
	(simplify_expr): Add documentation.
	Fix capitalization in error message.
	* tree-dump.c (dump_files): Add entry for -fdump-tree-simple.
	(dump_options): Add entry for -unparse.
	* tree.h (TDI_simple): Define.
	(TDF_UNPARSE): Define.
	* doc/invoke.texi: Document -fdump-tree-simple.

2002-01-23  Sebastian Pop  <s.pop@laposte.net>

	* c-pretty-print.c: Clean C++ comments.
	(debug_output_buffer): Remove declaration and definition.
	* diagnostic.h (debug_output_buffer): Add declaration.
	* diagnostic.c (debug_output_buffer): Add definition.

2002-01-21  Diego Novillo  <dnovillo@redhat.com>

	* tree-dfa.c (find_refs_in_stmt): Fix capitalization in error
	message.
	(find_refs_in_expr): Ditto.

2002-01-20  Diego Novillo  <dnovillo@redhat.com>
	    Sebastian Pop  <s.pop@laposte.net>

	* Makefile.in: Add c-simplify.o.
	* cp/Make-lang.in: Ditto.
	* c-decl.c (c_expand_body): Call simplify_stmt() before
	calling optimize_tree().
	* c-simplify.c: New file.
	* c-tree.h (simplify_stmt): Declare.
	(print_c_tree)
	* tree-dfa.c (find_refs_in_stmt): Fix error message for unhandled
	statement codes.

2002-01-20  Sebastian Pop  <s.pop@laposte.net>

	* Makefile.in: Add c-pretty-print.o.
	* cp/Make-lang.in: Ditto.
	* c-pretty-print.c: New file.
	* c-tree.h (print_c_tree): Declare.
	(print_c_node): Declare.
	(debug_c_tree): Declare.
	(debug_c_node): Declare.

2001-12-29  Diego Novillo  <dnovillo@redhat.com>

	* c-lang.c (c_post_options): Move code to enable tree-ssa
	if -Wuninitialized is used ...
	* c-common.c (c_common_post_options): ... here.

2001-12-29  Diego Novillo  <dnovillo@redhat.com>

	* Makefile.in (tree-optimize.o): Don't depend on c-common.h
	* tree-cfg.c: Don't include c-tree.h.  Explain why we need to
	include c-common.h.
	* tree-dfa.c: Explain why we need to include c-common.h.
	* tree-ssa.c: Ditto.
	* tree-optimize.c: Don't include c-common.h

2001-12-21  Nathan Sidwell  <nathan@codesourcery.com>

	Revert my patch of 2001-07-23 for the moment.

2001-10-15  Diego Novillo  <dnovillo@redhat.com>

	* tree-dfa.c (create_varref): If the new reference is inside a
	statement, add it to the list of references for that statement.

2001-10-14  Diego Novillo  <dnovillo@redhat.com>

	* Merge from mainline:

	Tue Sep 11 11:37:52 CEST 2001  Jan Hubicka  <jh@suse.cz>

		* basic-block.h (cached_make_edge): New.
		(make_edge): Remove first parameter.
		* flow.c (cached_make_edge): Rename from make_edge; return
		newly created edge; use obstack allocation.
		(make_edge): New.
		(flow_call_edges_add): Updaet make_edge call.
		(add_noreturn_fake_exit_edges): Likewise.
		(connect_infinite_loops_to_exit): Liekwise.
		(make_label_edge, make_edges, find_sub_basic_blocks): Use
		cached_make_edge.
		* profile.c (branch_prob): Update make_edge call.
		* ssa-dce.c (ssa_eliminate_dead_code): Likewise.

2001-10-14  Diego Novillo  <dnovillo@redhat.com>

	* Makefile.in (tree-ssa.o): Remove dependency on flags.h.
	(tree-optimize.o): Add dependency on flags.h.
	* bb-reorder.c (fixup_reorder_chain): Update call to make_edge.
	* c-lang.c (c_post_options): Set flag_tree_ssa if -Wuninitialized
	is given.
	* ifcvt.c (find_if_case_1): Update call to make_edge.
	* toplev.c (toplev_main): Do not warn about -Wuninitialized without
	-O if -ftree-ssa is used.
	* tree-cfg.c (dot_dump_file): Remove.
	(dot_dump_flags): Remove.
	(cfg_dump_file): Rename to dump_file.
	(cfg_dump_flags): Rename to dump_flags.
	(remove_bb_ann): New function.
	(tree_find_basic_blocks): Do not open dump files at the beginning
	of the function.
	Do not call delete_cfg.
	Create annotations for ENTRY_BLOCK_PTR and EXIT_BLOCK_PTR.
	(make_for_stmt_blocks): Update FOR_INIT_STMT_BB and FOR_COND_BB
	when creating the header blocks.
	Create the blocks for the loop body before the expression block.
	(make_while_stmt_blocks): Update END_WHILE_BB when creating the
	header blocks.
	Create the blocks for the loop body before the end-while block.
	(make_do_stmt_blocks): Update DO_COND_BB when creating header
	blocks.
	Create the blocks for the loop body before the block for DO_COND.
	(create_bb): When creating loop header blocks, allocate space for
	the header_blocks union.
	Call create_bb_ann to create a new annotation.
	(remove_bb_ann): New function.
	(tree_split_bb): New function.
	(make_edges): Remove first argument from call to make_edge,
	make_ctrl_stmt_edges, make_exit_edges, make_for_stmt_edges,
	make_while_stmt_edges, make_do_stmt_edges, make_if_stmt_edges,
	make_goto_stmt_edges, make_break_stmt_edges and
	make_continue_stmt_edges.
	When creating edges for the default label, remove the fallthru edge
	that was created for the associated SWITCH_STMT entry block.
	Do not call delete_unreachable_blocks.
	Call tree_cleanup_cfg.
	(make_ctrl_stmt_edges): Remove first argument.
	(make_exit_edges): Remove first argument.
	If the last element of the block is an EXPR_STMT, assume that it is
	the call to a non-returning function and make an edge to the exit
	block.
	Do not call make_return_stmt_edges.  Call make_edge directly.
	(make_for_stmt_edges): Remove first argument.
	Simplify the graph for infinite and zero-iteration loops.
	(make_while_stmt_edges): Remove first argument.
	Simplify the graph for infinite and zero-iteration loops.
	(make_do_stmt_edges): Remove first argument.
	Simplify the graph for infinite and one-iteration loops.
	(make_if_stmt_edges): Remove first argument.
	Simplify the graph for always-true and always-false conditionals.
	(make_goto_stmt_edges): Remove first argument.
	(make_break_stmt_edges): Remove first argument.
	(make_continue_stmt_edges): Remove first argument.
	(make_return_stmt_edges): Remove.
	(tree_cleanup_cfg): New function.
	(delete_unreachable_blocks): Do not react to -Wunreachable-code.
	Write to dump file blocks that have been removed.
	Call remove_edge.
	(is_ctrl_altering_stmt): If the statement contains a call to a
	non-returning function, return 1.
	(delete_cfg): Call remove_bb_ann.  Also remove annotations for
	ENTRY_BLOCK_PTR and EXIT_BLOCK_PTR.
	(latch_block): Use WHILE_COND_BB instead of END_WHILE_BB.
	(insert_stmt_tree_before): Use cfg_dump_file instead of dump_file.
	(insert_before_ctrl_stmt): Ditto.
	(insert_before_normal_stmt): Ditto.
	(insert_stmt_tree_after): Ditto.
	(insert_after_ctrl_stmt): Ditto.
	(insert_after_normal_stmt): Ditto.
	(replace_expr_in_tree): Ditto.
	(insert_bb_before): Ditto.
	* tree-dfa.c (tree_find_varrefs): Call find_refs_in_expr when the
	tree is not a statement.
	(find_refs_in_stmt): Update comments.
	Do not deal with FOR_STMT and DO_STMT trees separately.
	When processing VAR_DECLs, call find_refs_in_expr with the
	declaration, not its initial value.
	(find_refs_in_expr): When processing COMPONENT_REFs and ARRAY_REFs,
	recurse using the same reference type that was given by the
	original caller.
	(create_varref): Insert new PHI terms at the beginning of the
	BB_REFS array, not the end.
	* tree-flow.h (struct for_header_blocks): Declare.
	(union header_blocks): Declare.
	(struct bb_ann_def): Add new field 'loop_hdr'.
	(BB_ANN): Re-define so that it can be used as an lvalue.
	(BB_PARENT): Ditto.
	(BB_REFS): Ditto.
	(BB_PREV_CHAIN): Ditto.
	(BB_BINDING_SCOPE): Ditto.
	(BB_LOOP_HDR): Define.
	(FOR_INIT_STMT_BB): Redefine using BB_LOOP_HDR.
	(FOR_COND_BB): Ditto.
	(FOR_EXPR_BB): Ditto.
	(DO_COND_BB): Ditto.
	(END_WHILE_BB): New name for WHILE_COND_BB.
	(tree_warn_uninitialized): Declare.
	(tree_cleanup_cfg): Declare.
	(tree_split_bb): Declare.
	* tree-optimize.c: Include flags.h.
	(init_tree_flow): New function.
	(optimize_tree): Call build_tree_ssa instead of building SSA
	in-place.
	(build_tree_ssa): New function.
	* tree-optimize.h (build_tree_ssa): Declare.
	* tree-ssa.c: Don't include toplev.h
	(tree_warn_uninitialized): Define.
	(tree_compute_rdefs): Do not call is_upward_exposed.  Instead
	traverse all the uses of each variable and warn if the use is
	reached by the ghost definition.

2001-10-10  Graham Stott  <grahams@redhat.com>

	* tree-cfg.c (create_bb): Add new binding_scope parameter which allows
	the binding scope either to be explicitly specified if non-zero.
	(make_blocks): Update call to create_bb.
	(make_for_stmt_blocks): Ditto.
	(make_while_stmt_blocks): Ditto.
	(make_do_stmt_blocks): Ditto.
	(make_if_stmt_blocks): Ditto.
	(make_switch_stmt_blocks): Ditto.
	(create_maximal_bb): Ditto.
	(make_edges): If a statement expression is in the last basic
	block create an edge to EXIT_BLOCK_PTR and not the next block.
	(insert_before_normal_stmt): Pass the appropriate binding scope to
	create_bb.

2001-10-01  Graham Stott  <grahams@redhat.com>
	    Diego Novillo  <dnovillo@redhat.com>

	* tree-optimize.c (optimize_tree): Early return if the program has
	errors.

2001-09-30  Diego Novillo  <dnovillo@redhat.com>

	* tree-optimize.c (optimize_tree): Compute reaching definitions
	after building SSA.

2001-09-30  Diego Novillo  <dnovillo@redhat.com>

	* tree-cfg.c (insert_after_ctrl_stmt): Remove unused argument.
	(make_blocks): Pop top element from scope binding stack when an end
	of scope statement is found.
	(create_bb): Remove code for popping top element from scope binding
	stack.
	Do not push basic block 0 to initialize scope binding stack.
	(insert_stmt_tree_after): Remove unused argument from call to
	insert_after_ctrl_stmt.
	(tree_dump_bb): Dump BB_BINDING_SCOPE if defined.
	* doc/invoke.texi: Document debugging option -ftree-dump-ssa-rdefs.

2001-09-29  Diego Novillo  <dnovillo@redhat.com>

	* Makefile.in (tree-ssa.o): Update dependencies.
	(tree-cfg.o): Ditto.
	(tree-optimize.o): Ditto.
	* basic-block.h (BB_CONTROL_EXPR): Define.
	(BB_CONTROL_ENTRY): Define.
	* c-common.h (TDF_RDEFS): Define.
	* c-dump.c (dump_option_value_in): Add entry for TDF_RDEFS.
	* tree-cfg.c: Include flags.h and c-tree.h
	(binding_stack): New local variable.
	(delete_block): Rename to delete_bb.
	(tree_find_basic_blocks): Initialize varray 'binding_stack'.
	Call make_blocks with an additional argument.
	Adjust size of varray 'basic_block_info' after building CFG.
	(make_blocks): Add new argument prev_chain_p.
	Update all callers and callees.
	Create sub-graphs for statement-expressions.
	Update prev_chain_p when accessing the next tree in the chain.
	(make_for_stmt_blocks): Add new argument prev_chain_p.
	Update all callers and callees.
	Update flags for control header blocks with BB_CONTROL_ENTRY and/or
	BB_CONTROL_EXPR.
	(make_while_stmt_blocks): Ditto.
	(make_do_stmt_blocks): Ditto.
	(make_if_stmt_blocks): Ditto.
	(make_switch_stmt_blocks): Ditto.
	(create_maximal_bb): Add new argument prev_chain_p.
	Update all callers and callees.
	(create_bb): Add new argument prev_chain_p.
	Push basic block 0 the first time into the binding scope stack.
	Associate the new basic block to the binding scope at the top of
	the binding stack.
	Push new binding scopes when a SCOPE_BEGIN statement is found.
	Pop the top binding scope when a SCOPE_END statement is found.
	(make_edges): Handle statement expressions.
	Handle case labels preceded by scope statements in switch
	statements.
	(make_for_stmt_edges): Use FOR_INIT_STMT_BB, FOR_COND_BB and
	FOR_EXPR_BB to access the header basic blocks.
	(delete_unreachable_blocks): Call delete_bb instead of
	delete_block.
	(delete_block): Rename to delete_bb.
	(block_invalidates_loop): Use data references to find calls to
	non-pure functions.
	(is_ctrl_stmt): Reformat.
	(loop_body): New function.
	(set_loop_body): New function.
	(stmt_starts_bb_p): Statement expression trees also start a new
	basic block.
	(delete_cfg): Call VARRAY_FREE to delete all the references in each
	basic block.
	(latch_block): Use FOR_EXPR_BB, WHILE_COND_BB and DO_COND_BB to
	find out the latch block for the loop.
	(last_exec_stmt): New function.
	(is_exec_stmt): Scope statements that begin a scope are also
	considered executables.
	(is_statement_expression): New function.
	(first_non_decl_stmt): New function.
	(first_decl_stmt): New function.
	(first_non_label_in_bb): New function.
	(insert_stmt_tree_before): New function.
	(insert_before_ctrl_stmt): New function.
	(insert_before_normal_stmt): New function.
	(insert_stmt_tree_after): New function.
	(insert_after_ctrl_stmt): New function.
	(insert_after_normal_stmt): New function.
	(insert_after_loop_body): New function.
	(replace_expr_in_tree): New function.
	(find_expr_in_tree): New function.
	(insert_bb_before): New function.
	(tree_dump_bb): Display the contents of BB_PREV_CHAIN_P.
	* tree-dfa.c (tree_find_varrefs): Use accessor macros for array
	'referenced_symbols'.
	(find_refs_in_stmt): Do not process error_mark_node trees.
	Handle statement-expression nodes as any other statement tree.
	Do not call find_refs_in_stmt_expr.
	(find_refs_in_stmt_expr): Remove.
	(add_ref_to_sym): Remove.
	(add_ref_to_bb): Remove.
	(find_refs_in_expr): Do not process error_mark_node trees.
	ADDR_EXPR trees are not variable references except if used in a
	CALL_EXPR node.
	Handle EXPR_WITH_FILE_LOCATION nodes.
	(create_varref): Remove variable 'is_new'.
	Initialize data-flow arrays VARDEF_IMM_USES, VARDEF_RUSES,
	VARDEF_PHI_CHAIN and VARUSE_RDEFS.
	Do not call add_ref_to_sym and add_ref_to_bb.
	(add_ref_symbol): Use accessor macros for varray
	'referenced_symbols'.
	(function_may_recurse_p): New function.
	(get_fcalls): New function.
	(find_declaration): New function.
	(dump_varref): Handle NULL values of VARREF_EXPR.
	Use VARDEF_PHI_CHAIN instead of VARPHI_CHAIN.
	(dump_varref_list): Check if the list is NULL before traversing it.
	* tree-flow.h (struct vardef): Add fields 'ruses', 'marked' and
	'phi_chain'.
	(VARDEF_RUSES): Define.
	(VARDEF_MARKED): Define.
	(VARDEF_PHI_CHAIN): Define.
	(VARPHI_CHAIN): Remove.
	(struct varphi): Remove.
	(struct varuse): Add field 'rdefs'.
	(VARUSE_RDEFS): Define.
	(union varref_def): Remove field 'phi'.
	(IS_GHOST_DEF): Define.
	(IS_ARTIFICIAL_REF): Define.
	(struct bb_ann_def): Add fields 'prev_chain_p' and 'binding_scope'.
	(BB_PREV_CHAIN_P): Define.
	(BB_BINDING_SCOPE): Define.
	(FOR_INIT_STMT_BB): Define.
	(FOR_COND_BB): Define.
	(FOR_EXPR_BB): Define.
	(WHILE_COND_BB): Define.
	(DO_COND_BB): Define.
	(IF_COND_BB): Define.
	(CASE_COND_BB): Define.
	(NREF_SYMBOLS): Define.
	(REF_SYMBOL): Define.
	(ADD_REF_SYMBOL): Define.
	(FCALL_NON_PURE): Define.
	(FCALL_PURE): Define.
	(FCALL_BUILT_IN): Define.
	(loop_body): Declare.
	(set_loop_body): Declare.
	(last_exec_stmt): Declare.
	(is_statement_expression): Declare.
	(first_non_decl_stmt): Declare.
	(first_decl_stmt): Declare.
	(first_non_label_in_bb): Declare.
	(insert_stmt_tree_before): Declare.
	(insert_stmt_tree_after): Declare.
	(replace_expr_in_tree): Declare.
	(find_expr_in_tree): Declare.
	(insert_bb_before): Declare.
	(function_may_recurse_p): Declare.
	(get_fcalls): Declare.
	(find_declaration): Declare.
	(tree_compute_rdefs): Declare.
	(analyze_rdefs): Declare.
	(is_upward_exposed): Declare.
	* tree-optimize.c (optimize_tree): Update name for varray
	referenced_symbols.
	Free varray referenced_symbols and call delete_ssa on exit.
	* tree-ssa.c: Include flags.h, diagnostic.h and toplev.h.
	(tree_build_ssa): Create ghost definitions before building FUD
	chains.
	(insert_phi_terms): Use accessor macros for 'referenced_symbols'.
	Ignore ghost definitions when placing PHI terms.
	(build_fud_chains): Call get_tree_ann to create an annotation for
	the symbol if it doesn't already have one.
	(search_fud_chains): Reformat comments.
	Do not initialize varray VARDEF_IMM_USES.
	If a successor basic block does not have references, continue on to
	the next one, do not stop.
	Do not initialize varray VARDEF_PHI_CHAIN.
	(delete_ssa): New function.
	(delete_refs): New function.
	(tree_compute_rdefs): New function.
	(analyze_rdefs): New function.
	(follow_chain): New function.
	(is_upward_exposed): New function.

2001-09-14  Diego Novillo  <dnovillo@redhat.com>

	* tree-cfg.c (tree_find_basic_blocks): Remove call to
	mark_critical_edges.
	(create_maximal_bb): Do not create annotations for non-executable
	statements.
	(map_stmt_to_bb): Rename basic_block_ann with bb_ann.
	(delete_cfg): Ditto.
	(is_exec_stmt): Reformat.
	(create_bb_ann): New function.
	* tree-dfa.c (create_node): Remove.
	(ref_symbols_list): Remove.
	(create_tree_ann): Declare.
	(referenced_symbols): Declare.
	(tree_find_varrefs): Replace usage of linked lists with variable
	arrays.
	(create_varref): Remove second argument from call to
	add_ref_symbol.
	Update comments.
	(add_ref_to_sym): Replace usage of linked lists with variable
	arrays.
	Declare static.
	(add_ref_to_bb): Ditto.
	(add_ref_symbol): Ditto.
	(dump_varref_list): Ditto.
	(debug_varref_list): Ditto.
	(create_varref_list): Remove.
	(push_ref): Remove.
	(create_node): Remove.
	(delete_varref_list): Remove.
	(get_tree_ann): Call create_tree_ann if the tree doesn't have an
	annotation already.
	(create_tree_ann): New function.
	* tree-flow.h (varref_list_def): Remove.
	(vardef): Change type of field 'imm_uses' to 'varray_type'.
	(varphi): Change type of field 'phi_chain' to 'varray_type'.
	(varref_node_def): Remove.
	(varref_node): Remove.
	(VARREF_NODE_ELEM): Remove.
	(VARREF_NODE_NEXT): Remove.
	(VARREF_NODE_PREV): Remove.
	(varref_list_def): Remove.
	(varref_list): Remove.
	(VARREF_LIST_FIRST): Remove.
	(VARREF_LIST_LAST): Remove.
	(tree_ann_def): Change type of field 'refs' to 'varray_type'.
	(basic_block_ann_def): Rename to 'bb_ann_def'.
	Change type of field 'refs' to 'varray_type'.
	(basic_block_ann): Rename to 'bb_ann'.
	(ref_symbols_list): Remove.
	(referenced_symbols): Declare.
	(add_ref_to_sym): Remove.
	(add_ref_to_bb): Remove.
	(add_ref_symbol): Remove.
	(remove_ann_from_sym): Remove.
	(create_varref_list): Remove.
	(push_ref): Remove.
	(delete_varref_list): Remove.
	(debug_varref_list): Update argument type to be 'varray_type'.
	(dump_varref_list): Ditto.
	* tree-optimize.c: Include 'basic-block.h'.
	(optimize_tree): Replace references to 'ref_symbols_list' with
	'referenced_symbols'.
	Remove call to delete_varref_list.
	* tree-ssa.c (insert_phi_terms): Rename 'work_list' to
	'work_stack'.
	Use VARRAY_PUSH and VARRAY_TOP to access 'work_stack' instead of
	maintaining the stack pointer in 'work_list_top'.
	Remove code to grow 'work_stack'.
	Remove references to 'work_list_top'.
	Replace references to 'ref_symbols_list' with 'referenced_symbols'.
	(build_fud_chains): Replace references to 'ref_symbols_list' with
	'referenced_symbols'.
	(search_fud_chains): If there are no variable references in the
	basic block, return early.
	Change usage of linked lists with variable arrays.

2001-09-07  Diego Novillo  <dnovillo@redhat.com>

	* tree-cfg.c (tree_find_basic_blocks): Document how to traverse
	trees inside a basic block.
	(make_for_stmt_blocks): Make sure that there is always a block for
	FOR_EXPR, even if the loop does not have an expression.
	Create a separate block for FOR_INIT_STMT.
	(make_while_stmt_blocks): Always create an "end_while" block.
	(make_if_stmt_blocks): Do not store IF_COND in the header block of
	an IF statement.
	(make_for_stmt_edges): Create an edge from the block header to the
	block for FOR_INIT_STMT.
	Determine the first block of the loop body calling BB_FOR_STMT on
	the first executable statement in the body.
	Remove the special case for missing FOR_EXPR trees.
	(make_while_stmt_edges): Create a back edge from the end_while
	block to the header block.
	Determine the first block of the loop body calling BB_FOR_STMT on
	the first executable statement in the body.
	(make_do_stmt_edges): Determine the first block of the loop body
	calling BB_FOR_STMT on the first executable statement in the body.
	(condition_block): Rename to latch_block.  Return the latch
	block for the given loop header.
	(make_continue_stmt_edges): Rename condition_block to
	latch_block.
	(successor_block): Ditto.
	* tree-flow.h (condition_block): Rename to latch_block.

2001-09-06  Diego Novillo  <dnovillo@redhat.com>

	* tree-dfa.c (tree_find_varrefs): Use TDF_REFS instead of TDF_VARREF.
	* tree-flow.h (TDF_VARREF): Remove.

2001-09-04  Nathan Sidwell  <nathan@codesourcery.com>

	* c-common.h (tree_dump_index): Add more comments.
	(TDF_REFS): New dump flag.
	* c-dump.c (dump_files): Name flags `tree' rather than `ast'.
	(dump_option_value_info): New struct.
	(dump_options): New array.
	(dump_switch_p): Parse switch options symbolically.
	* doc/invoke.texi (-fdump-ast): Rename to ...
	(-fdump-tree): ... here. Document options are symbolic, and
	not all are applicable. Combine ssa related flags into the other
	tree dump flags.

2001-08-27  Diego Novillo  <dnovillo@redhat.com>

	* Makefile.in (tree-ssa.o): Update dependencies.
	(tree-cfg.o): Ditto.
	(tree-dfa.o): Ditto.
	(tree-optimize.o): Ditto.

2001-08-26  Diego Novillo  <dnovillo@redhat.com>

	* Makefile.in (C_AND_OBJC_OBJS): Replace tree-opt.o with
	tree-optimize.o.
	(c-decl.o): Ditto.
	(tree-ssa.o): Ditto.
	(tree-cfg.o): Ditto.
	(tree-dfa.o): Ditto.
	(tree-opt.o): Ditto.
	* c-decl.c: Replace tree-opt.h with tree-optimize.h.
	(c_expand_body): Remove call to init_tree_opt.
	* flow.c (flow_loop_dump): Do not display insn UIDs if this is not
	an RTL basic block.
	* tree-cfg.c: Replace tree-opt.h with tree-optimize.h.
	(block_invalidates_loop): New local function.
	(validate_loops): New function.
	(tree_dump_bb): Display the loop depth of the block.
	* tree-dfa.c: Replace tree-opt.h with tree-optimize.h.
	* tree-flow.h (validate_loops): Declare.
	* tree-opt.c: Rename to tree-optimize.c.
	* tree-opt.h: Rename to tree-optimize.h.
	* tree-optimize.c: Rename from tree-opt.c.
	* tree-optimize.h: Rename from tree-opt.h.
	* tree-ssa.c: Replace tree-opt.h with tree-optimize.h.
	(tree_build_ssa): Call tree_dump_bb instead of tree_debug_bb.
	* cp/Make-lang.in: Replace tree-opt.h with tree-optimize.h.

2001-08-20  Diego Novillo  <dnovillo@redhat.com>

	* basic-block.h (basic_block): Remove field 'reachable'.
	Add new field 'flags'.
	(BB_REACHABLE): Define.
	* c-common.h (tree_dump_index): Add TDI_cfg, TDI_dot, TDI_ssa.
	* c-decl.c (c_decode_option): Skip '-f' prefix before calling
	dump_switch_p.
	* c-dump.c (dump_file_info): Add entries for -fdump-tree-cfg,
	-fdump-tree-graphviz and -fdump-tree-ssa.
	* flow.c (find_unreachable_blocks): Use BB_REACHABLE bit in bb->flags
	instead of bb->reachable.
	(delete_unreachable_blocks): Ditto.
	* tree-cfg.c: Minor formatting changes throughout the file.
	(DEBUG_TREE_FLOW): Remove.
	(debug_tree_flow): Remove.
	(cfg_dump_file): New local variable.
	(dot_dump_file): New local variable.
	(cfg_dump_flags): New local variable.
	(dot_dump_flags): New local variable.
	(tree_find_basic_blocks): Remove unused arguments.
	Add code to react to -fdump-tree-cfg and -fdump-tree-graphviz.
	Remove uses of DEBUG_TREE_FLOW.
	(delete_unreachable_blocks): Use BB_REACHABLE bit in bb->flags
	instead of bb->reachable.
	(tree_dump_cfg): New.
	(tree_debug_cfg): Call tree_dump_cfg().
	(tree_cfg2dot): Accept a FILE pointer instead of a file name as
	argument.
	Name the graph with the current function name.
	* tree-dfa.c: Minor formatting changes throughout the file.
	(DEBUG_TREE_DFA): Remove.
	(debug_tree_dfa): Remove.
	(dump_file): New local variable.
	(dump_flags): New local variable.
	(tree_find_varrefs): Add code to react to -fdump-tree-ssa.
	Remove uses of DEBUG_TREE_DFA.
	(find_refs_in_expr): Remove uses of DEBUG_TREE_DFA.
	(create_varref): Replace VARREF_BLOCK with VARREF_BB.
	* tree-flow.h: Minor formatting changes throughout the file.
	(VARREF_BLOCK): Rename to VARREF_BB.
	(VARREF_NEXT): Remove.
	(VARREF_PREV): Remove.
	(TDF_VARREF): Define.
	(tree_find_basic_blocks): Remove unused arguments.
	(tree_dump_cfg): Declare.
	(tree_cfg2dot): Change argument to FILE *.
	* tree-opt.c: Minor formatting changes throughout the file.
	(optimize_tree): Remove unused arguments in call to
	tree_find_basic_blocks().
	* tree-opt.h: Ditto.
	* tree-ssa.c: Minor formatting changes throughout the file.
	(DEBUG_TREE_SSA): Remove.
	(debug_tree_ssa): Remove.
	(dump_file): New local variable.
	(dump_flags): New local variable.
	(tree_build_ssa): Add code to react to -fdump-tree-ssa.
	Remove uses of DEBUG_TREE_SSA.
	(insert_phi_terms): Remove uses of DEBUG_TREE_SSA.
	* doc/invoke.texi: Add documentation for -fdump-tree-cfg,
	-fdump-tree-graphviz and -fdump-tree-ssa.
	Replace existing references to -fdump-tree with -fdump-ast.

2001-08-10  Diego Novillo  <dnovillo@redhat.com>

	* basic-block.h (basic_block): Add new field 'reachable'.
	(expunge_block): Declare.
	* flow.c (ENTRY_BLOCK_PTR): Initialize field 'reachable'.
	(EXIT_BLOCK_PTR): Ditto.
	(expunge_block): Remove static declaration.
	(cleanup_cfg): Clear bb->aux on every basic block.
	(find_unreachable_blocks): Use field 'reachable' when computing
	reachability.
	(delete_unreachable_blocks): Use field 'reachable'.

	* tree-cfg.c: Rename all instance of 'node' with 'block.
	(get_successor_block): Rename to successor_block.
	(make_compound_stmt_edges): Remove.
	(make_switch_stmt_edges): Remove.
	(delete_unreachable_blocks): New.
	(delete_block): New.
	(make_blocks): Add new argument 'compound_stmt'.  Do not include
	COMPOUND_STMT trees in the flowgraph.
	(make_for_stmt_blocks): Include FOR_INIT_STMT in the entry block of
	the loop.
	If FOR_COND does not exist, create a tree holding the constant 1.
	Add new argument 'compound_stmt'.
	(make_while_stmt_blocks): Include WHILE_COND in the entry block of
	the loop.
	Add new argument 'compound_stmt'.
	(make_do_stmt_blocks): Add new argument 'compound_stmt'.
	(make_if_stmt_blocks): Add new argument 'compound_stmt'.
	Include IF_COND in the IF header block.
	(make_switch_stmt_blocks): Add new argument 'compound_stmt'.
	Include SWITCH_COND in the SWITCH header block.
	(create_maximal_bb): Remove argument 'is_loop_header'.
	Add new argument 'compound_stmt'.
	Update all callers.
	Return the newly created basic block instead of its last statement.
	Update comments.
	Do not store control flow altering statements in bb->exit_stmt.
	Only add executable statements to the block.
	Annotate with 'compound_stmt' each tree added to the block.
	(create_bb): Do not update annotation 'is_loop_header'.
	(make_edges): Remove naive reachability analysis.
	When a label node is found, add an edge from the immediately
	enclosing switch statement.
	Call delete_unreachable_blocks() after adding all the edges.
	(make_ctrl_stmt_edges): Do not consider COMPOUND_STMT trees.
	Do nothing for SWITCH_STMT trees.
	(make_exit_edges): Use bb->end_tree instead of BB_EXIT_STMT.
	(make_for_stmt_edges): Remove code that added edges for the block
	holding FOR_INIT_STMT.
	Update comments.
	Do not consider the case where FOR_COND is NULL.
	Call first_exec_stmt() to determine if FOR_BODY is empty.
	Only create an edge from expr_bb to cond_bb if FOR_EXPR is
	non-null.
	(make_while_stmt_edges): Remove code that added edges for the block
	holding WHILE_COND.
	Update comments.
	Call first_exec_stmt() to determine if WHILE_BODY is empty.
	(make_do_stmt_edges): Call first_exec_stmt() to determine if
	DO_BODY is empty.
	(make_if_stmt_edges): Remove code that added edges for the block
	holding IF_COND.
	Call first_exec_stmt() to determine if THEN_CLAUSE or ELSE_CLAUSE
	are empty.
	(make_switch_stmt_edges): Remove.
	(make_goto_stmt_edges): Use bb->end_tree instead of BB_EXIT_STMT.
	(make_break_stmt_edges): Use bb->end_tree instead of BB_EXIT_STMT.
	Call switch_parent() and loop_parent() to determine if the
	statement is inside an appropriate control structure.
	(make_continue_stmt_edges): Use bb->end_tree instead of
	BB_EXIT_STMT.
	(make_return_stmt_edges): Ditto.
	(get_successor_block): Rename to successor_block.
	Call first_exec_stmt() to find the first executable statement in
	TREE_CHAIN.
	(is_ctrl_stmt): Do not consider COMPOUND_STMT trees.
	(stmt_starts_bb_p): Ditto.
	(stmt_ends_bb_p): Reformat comments.
	(delete_cfg): Reformat comments.
	(find_loop_parent): Rename to loop_parent.
	(get_condition_block): Rename to condition_block.
	Update to use new index numbers for control structure header
	blocks.
	(switch_parent): New.
	(first_exec_stmt): New.
	(is_exec_stmt): New.
	(tree_cfg2dot): Reformat comments.
	* tree-dfa.c (find_refs): Remove.
	(find_refs_in_stmt): New
	(find_refs_in_stmt_expr): New.
	(tree_find_varrefs): Look for variables doing a CFG traversal
	instead of the trees.  Remove both arguments.
	(find_refs_in_expr): Add new argument 'bb'.
	Update all recursive calls.
	(create_varref): Abort if the basic block 'bb' is NULL.
	(add_ref_to_sym): Reformat comments.
	(add_ref_symbol): Ditto.
	(delete_varref_list): Ditto.
	* tree-flow.h (struct tree_ann_def): Add 'compound_stmt'.
	(TREE_COMPOUND_STMT): New macro.
	(struct basic_block_ann_def): Remove 'exit_stmt' and
	'is_loop_header'.
	(BB_EXIT_STMT): Remove.
	(BB_IS_LOOP_HEADER): Remove.
	* tree-opt.c (optimize_tree): Call tree_find_varrefs() with no
	arguments.
	Only build DFA and SSA information if n_basic_blocks is greater
	than zero.
	* tree-ssa.c: Rename all instances of 'node' with 'block'.
	(tree_build_ssa): Reformat comments.
	(insert_phi_terms): Ditto.

2001-08-01  Diego Novillo  <dnovillo@redhat.com>

	* tree-cfg.c (USE_TREE_IL): Remove.
	(make_back_edges): Remove.
	(make_fallthru_edge): Remove.
	(get_outermost_scope_block): Remove.
	(is_last_block_of_loop): Remove.
	(tree_find_basic_blocks): Do not return early if 'errorcount' is set.
	(make_edges): Do not treat back edges as a separate case.
	Do not call make_fallthru_edge to create fall-through edges.
	Do not emit a warning for unreachable blocks containing a single
	closing brace.
	(make_do_stmt_edges): Update comment.
	(make_goto_stmt_edges): Do not call get_outermost_scope_block().
	(make_break_stmt_edges): Do not call get_outermost_scope_block().
	Do not call make_back_edges().
	(make_continue_stmt_edges): Call find_loop_parent().  Emit an error
	if the 'continue' statement is not inside a loop.  Call
	get_condition_block() to find the target node.
	(make_return_stmt_edges): Do not call get_outermost_scope_block().
	(get_successor_block): Return EXIT_BLOCK_PTR if 'bb' is the last
	block in the graph.
	Return the condition node of the loop if 'bb' doesn't have a
	natural successor and its parent is a loop header.
	(tree_cfg2dot): Output fake edges with dotted lines.
	* tree-dfa.c (USE_TREE_IL): Remove.
	* tree-opt.c (USE_TREE_IL): Remove.
	* tree-ssa.c (USE_TREE_IL): Remove.
	* tree-flow.h (is_last_block_of_loop): Remove.

2001-07-23  Diego Novillo  <dnovillo@redhat.com>

	* Makefile.in (C_AND_OBJC_OBJS): Add tree-cfg.o, tree-dfa.o,
	tree-ssa.o and tree-opt.o.
	(c-decl.o): Add dependency on tree-opt.h
	(tree-ssa.o): New rule.
	(tree-cfg.o): New rule.
	(tree-dfa.o): New rule.
	(tree-opt.o): New rule.
	* c-decl.c: Include tree-opt.h.
	(c_expand_body): Call optimize_tree() when the -ftree-ssa flag is
	given.
	* flags.h (flag_tree_ssa): Declare.
	* toplev.c (flag_tree_ssa): Define.
	(lang_independent_options): Add -ftree-ssa.
	* tree-cfg.c: New file.
	* tree-dfa.c: New file.
	* tree-flow.h: New file.
	* tree-opt.c: New file.
	* tree-opt.h: New file.
	* tree-ssa.c: New file.
	* cp/Make-lang.in (CXX_C_OBJS): Add tree-cfg.o, tree-dfa.o,
	tree-opt.o and tree-ssa.o.
	* doc/invoke.texi: Add documentation for -ftree-ssa.

2001-07-23  Nathan Sidwell  <nathan@codesourcery.com>

	* Makefile.in (calls.o): Depend on intl.h.
	* calls.c: Include intl.h.
	(ECF_NEED_STACK_FRAME, ECF_NEED_ARG_FRAME): New flags.
	(special_function_p): Detect when we need a stack or arg
	frame. Don't optimize on length.
	(setjmp_call_p): Remove.
	(uninlinable_call_p): New function.
	* tree.h (setjmp_call_p): Remove.
	(uninlinable_call_p): Declare.

2001-07-22  Nathan Sidwell  <nathan@codesourcery.com>

	* params.def (PARAM_MAX_INLINE_AST): New parameter.
	(PARAM_ARG_INLINE_AST): New parameter.
	* doc/invoke.texi (max-inline-ast, arg-inline-ast): Document
	parameters.

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