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:


Copyright (C) 2001-2004 Free Software Foundation, Inc.

Copying and distribution of this file, with or without modification,
are permitted in any medium without royalty provided the copyright
notice and this notice are preserved.
