diff gcc/ChangeLog.tree-ssa @ 0:a06113de4d67

first commit
author kent <kent@cr.ie.u-ryukyu.ac.jp>
date Fri, 17 Jul 2009 14:47:48 +0900
parents
children 77e2b8dfacca
line wrap: on
line diff
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/gcc/ChangeLog.tree-ssa	Fri Jul 17 14:47:48 2009 +0900
@@ -0,0 +1,19338 @@
+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: