OSDN Git Service

* interface.c: Fix a comment typo.
[pf3gnuchains/gcc-fork.git] / gcc / ChangeLog
index 6838130..8824718 100644 (file)
@@ -1,3 +1,578 @@
+2005-04-10  Kazu Hirata  <kazu@cs.umass.edu>
+
+       * config/arm/arm.c: Fix a comment typo.
+       * doc/tree-ssa.texi: Fix a typo.
+
+2005-04-10  Steven Bosscher  <stevenb@suse.de>
+
+       * cselib.c (clear_table): Rename to cselib_clear_table.
+       * cselib.h (cselib_clear_table): Add prototype.
+       * gcse.c (gcse_main): Make 'f' argument unused.
+       (alloc_gcse_mem): Do not walk the insn chain, walk the contents
+       of each basic block instead.
+       (compute_sets, compute_hash_table_work): Likewise.
+       (constprop_register): Change int 'alter_jumps' argument to bool.
+       (do_local_cprop): Likewise.
+       (local_cprop_pass): Likewise.  Also walk basic blocks instead of
+       the insn chain.  Explicitly clear the cselib tables after finishing
+       one basic block.  Make sure there are no unterminated libcall blocks.
+       Update compute_sets call.
+       (cprop): Walk basic blocks instead of the insn chain.
+       (one_cprop_pass, compute_ld_motion_mems, compute_store_table):
+       Likewise.
+       (bypass_jumps): Update alloc_gcse_mem, compute_sets, and
+       one_cprop_pass calls.
+
+2005-04-10  Richard Sandiford  <rsandifo@redhat.com>
+
+       * combine.c (combine_simplify_rtx): Remove a transformation that
+       relies on an invalid assumption about rtl sign-extension semantics.
+
+2005-04-10  Richard Sandiford  <rsandifo@redhat.com>
+
+       * value-prof.c (tree_divmod_fixed_value_transform): Fix arguments
+       to build_int_cst_wide.
+
+2005-04-09  Alexandre Oliva  <aoliva@redhat.com>
+
+       PR target/20126
+       * loop.c (loop_givs_rescan): If replacement of DEST_ADDR failed,
+       set the original address pseudo to the correct value before the
+       original insn, if possible, and leave the insn alone, otherwise
+       create a new pseudo, set it and replace it in the insn.
+       * recog.c (validate_change_maybe_volatile): New.
+       * recog.h (validate_change_maybe_volatile): Declare.
+
+2005-04-09  Caroline Tice  <ctice@apple.com>
+
+       * bb-reorder.c (find_rarely_executed_basic_blocks_and_crossing_edges):
+       Remove targetm.have_named_sections test.
+       (fix_edges_for_rarely_executed_code): Likewise.
+       (insert_section_boundary_note): Likewise.
+       (reorder_basic_blocks): Check partitioning flag before calling
+       verify_hot_cold_block_grouping.
+       * dbxout.c (dbxout_function_end): Get hot/cold section labels from
+       the function struct rather than global variables.
+       * dwarf2out.c (COLD_TEXT_SECTION_LABEL): New macro.
+       (COLD_END_LABEL): Likewise
+       (cold_text_section_label): New static global variable.
+       (cold_end_label): Likewise.
+       (dwarf2out_switch_text_section): Get hot/cold section labels from
+       the function struct rather than global variables.
+       (output_aranges): Use cold_text_section_label and cold_end_label;
+       check partitioning flag before putting out delta.
+       (output_ranges): Remove incorrect code attempting to use
+       hot/cold labels.
+       (output_line_info): Get cold section label from function struct.
+       (add_location_or_const_value_attribute): Likewise.
+       (get_subprogram_die): Get hot/cold section labels from function struct.
+       (dwarf2out_var_location): Likewise.
+       (dwarf2out_init): Generate cold_text_section_label and cold_end_label;
+       write out cold_text_section_label if partition flag is set.
+       (dwarf2out_finish): Write out cold_end_label if partition flag is set;
+       * function.h (struct function): Add new fields to point to hot/cold
+       section labels: hot_section_label, cold_section_label,
+       hot_section_end_label and cold_section_end_label; also add new field
+       for cold text section name, unlikely_text_section_name.
+       * opts.c (decode_options): Turn off partitioning flag if
+       !targetm.have_named_sections.
+       * output.h (hot_section_label): Remove.
+       (hot_section_end_label): Remove.
+       (cold_section_end_label): Remove.
+       (unlikely_section_label): Remove.
+       (unlikely_text_section_name): Remove.
+       * passes.c (rest_of_handle_final):  Remove code that frees
+       unlikely_text_section_name.
+       * varasm.c (unlikely_section_label): Remove.
+       (hot_section_label): Remove.
+       (hot_section_end_label): Remove.
+       (cold_section_end_label): Remove.
+       (unlikely_text_section_name):  Remove.
+       (initialize_cold_section_name): Modify to call
+       targetm.strip_name_encoding; to store cold section name in current
+       function struct, if it exists; and to only use the decl_section_name
+       if flag_named_sections is true.
+       (unlikely_text_section): Modify to get section name out of current
+       function struct, if there is one; otherwise build it from
+       UNLIKELY_EXECUTED_TEXT_SECTION_NAME.
+       (in_unlikely_text_section): Likewise.
+       (named_section): Modify to get/put cold section name in current function
+       struct, if there is one.
+       (function_section):  Change 'bool unlikely' to 'int reloc'; check
+       targetm.have_named_sections before calling named_section.
+       (current_function_section): Likewise.
+       (assemble_start_function): Modify to get/put unlikely_text_section_name
+       in current function struct; modify to get hot/cold section labels
+       from function struct; initialize labels using 
+       ASM_GENERATE_INTERNAL_LABEL;
+       test partitioning flag before writing out hot section label.
+       (assemble_end_function): Test partitioning flag before writing out
+       hot/cold section labels.
+       (default_section_type_flags_1):  Modify to use array instead of
+        char* for unlikely_text_section_name; set flags correctly for
+        cold text section if there is not a current function decl.
+
+2005-04-09  Jakub Jelinek  <jakub@redhat.com>
+
+       * tree.h (enum tree_index): Add TI_VA_LIST_GPR_COUNTER_FIELD
+       and TI_VA_LIST_FPR_COUNTER_FIELD.
+       (va_list_gpr_counter_field, va_list_fpr_counter_field): Define.
+       * tree-pass.h (pass_stdarg): Add.
+       * tree-optimize.c (init_tree_optimization_passes): Add pass_stdarg.
+       * tree-stdarg.c: New file.
+       * tree-stdarg.h: New file.
+       * Makefile.in (OBJS-common): Add tree-stdarg.o.
+       (tree-stdarg.o): Add dependencies.
+       * function.h (struct function): Add va_list_gpr_size and
+       va_list_fpr_size fields.
+       * function.c (allocate_struct_function): Initialize them.
+       * target.h (struct gcc_target): Add stdarg_optimize_hook.
+       * target-def.h (TARGET_STDARG_OPTIMIZE_HOOK): Define.
+       (TARGET_INITIALIZER): Add it.
+
+       * config/i386/i386.c (ix86_build_builtin_va_list): Initialize
+       va_list_{g,f}pr_counter_field.
+       (ix86_setup_incoming_varargs): Don't do anything if reg_save
+       area will not be used.  Only save registers that tree-stdarg.c
+       detected they need saving.
+       (ix86_va_start): Don't set up fields that won't be used.
+
+       * config/rs6000/rs6000.c (rs6000_build_builtin_va_list): Initialize
+       va_list_{g,f}pr_counter_field.
+       (setup_incoming_varargs): Don't do anything if reg_save
+       area will not be used.  Only save registers that tree-stdarg.c
+       detected they need saving.
+       (rs6000_va_start): Don't set up fields that won't be used.
+
+       * config/alpha/alpha.c: Include tree-flow.h and tree-stdarg.h.
+       (alpha_build_builtin_va_list): Initialize va_list_gpr_counter_field.
+       (va_list_skip_additions, alpha_stdarg_optimize_hook): New functions.
+       (TARGET_STDARG_OPTIMIZE_HOOK): Define.
+
+2005-04-09  Jakub Jelinek  <jakub@redhat.com>
+
+       PR target/20795
+       * config/i386/i386.c (construct_container): Pass empty aligned
+       struct, union or class in memory.
+
+2005-04-09  Kazu Hirata  <kazu@cs.umass.edu>
+
+       * dominance.c, gthr-win32.h, reg-stack.c, tree-ssa-copy.c,
+       tree-ssa-operands.c, tree-ssa.c, tree-vrp.c, varasm.c,
+       config/alpha/alpha.c, config/arm/arm.c, config/m32r/m32r.h,
+       config/rs6000/predicates.md: Fix comment typos.
+
+       * sched-int.h (haifa_insn_data): Remove blockage and units.
+       (INSN_UNIT, INSN_BLOCKAGE, UNIT_BITS, BLOCKAGE_MASK,
+       ENCODE_BLOCKAGE, UNIT_BLOCKED, BLOCKAGE_RANGE,
+       MIN_BLOCKAGE_COST, MAX_BLOCKAGE_COST): Remove.
+
+2005-04-09  Jan Hubicka  <jh@suse.cz>
+           Steven Bosscher  <stevenb@suse.de>
+
+       * cfglayout.c (copy_bbs): Rename n_edges to num_edges.
+       * cfgloop.c (get_loop_exit_edges): Likewise.
+       * cfgloopmanip.c (fix_irreducible_loops): Likewise.
+       (unloop): Likewise.
+       * loop-unroll.c (analyze_insns_in_loop): Likewise.
+       * tree-cfg.c (dump_cfg_status): Likewise.
+
+2005-04-09  David Edelsohn  <edelsohn@gnu.org>
+
+       * config/rs6000/predicates.md (altivec_register_operand): Remove
+       redundant match_code test.
+       (gpc_reg_operand): Same.
+       (cc_reg_operand): Same.
+       (cc_reg_not_cr0_operand): Same.
+
+2005-04-09  Jan Hubicka  <jh@suse.cz>
+
+       Forgotten hunk from my last merge patch:
+       * final.c (output_addr_const): Do not call mark_referenced.
+
+2005-04-09  Andrew MacLeod  <amacleod@redhat.com>
+
+       * doc/tree-ssa.texi: Add immediate use documentation.
+
+2005-04-09  Richard Earnshaw <richard.earnshaw@arm.com>
+
+       * arm.c (FL_WBUF): Define.
+       (arm_tune_strongarm): Renamed from arm_is_strong.  All uses changed.
+       (arm_is_6_or_7): Delete.
+       (arm_tune_wbuf): New.
+       (arm_override_options): Set arm_tune_wbuf.
+       * arm.h (arm_tune_strongarm): Renamed from arm_is_strong.
+       (arm_is_6_or_7): Delete declaration.
+       (arm_tune_wbuf): New declartion.
+       * arm.md (is_strongarm): Derive from arm_tune_strongarm.
+       (model_wbuf): Derive from arm_tune_wbuf.
+       * arm-cores.def (arm600, arm610, arm620, arm700, arm700i, arm710)
+       (arm720, arm710c, arm7100, arm7500, arm7500fe, arm710t, arm720t)
+       (arm740t): Mark CPUs as having a write buffer.
+
+2005-04-09  Uros Bizjak  <uros@kss-loka.si>
+
+       * config/i386/i386.md (*fp_jcc_7_387): Use 'const0_operand' instead
+       of 'const_double_operand' in operand 2 constraints.  Update enable
+       condition.
+
+2005-04-09  Uros Bizjak  <uros@kss-loka.si>
+
+       * builtins.def (BUILT_IN_LFLOOR, BUILT_IN_LFLOORF, BUILT_IN_LFLOORL)
+       (BUILT_IN_LLFLOOR, BUILT_IN_LLFLOORF, BUILT_IN_LLFLOORL): New.
+       * optabs.h (enum optab_index): Add new OTI_lfloor.
+       (lfloor_optab): Define corresponding macro.
+       * optabs.c (init_optabs): Initialize lfloor_optab.
+       * genopinit.c (optabs): Implement lfloor_optab using lfloorsi2
+       and lfloordi2 patterns.
+       * builtins.c (expand_builtin_int_roundingfn): New prototype.
+       (expand_builtin_int_roundingfn): New function.
+       (fold_builtin_int_roundingfn): New prototype.
+       (fold_builtin_int_roundingfn): New function, renamed from
+       fold_builtin_lround.
+       Handle BUILT_IN_LROUND{,F,L}, BUILT_IN_LLROUND{,F,L} and
+       BUILT_IN_LFLOOR{,F,L}, BUILT_IN_LLFLOOR{,F,L}.
+       (fold_builtin_1): Fold BUILT_IN_LFLOOR{,F,L} and
+       BUILT_IN_LLFLOOR{,F,L} using fold_builtin_int_roundingfn.
+       (mathfn_built_in): Handle BUILT_IN LFLOOR and BUILT_IN_LLFLOOR.
+       (expand_builtin): Expand BUILT_IN_LFLOOR{,F,L} and
+       BUILT_IN_LLFLOOR{,F,L} using expand_builtin_int_roundingfn.
+       * convert.c (convert_to_integer): Convert (long int)floor{,f,l},
+       into lfloor built-in function and (long long int)floor{,f,l} into
+       llfloor built-in function.
+       * fold-const.c (tree_expr_nonnegative_p): Add BUILT_IN_LFLOOR and
+       BUILT_IN_LLFLOOR.
+
+2005-04-08  Ian Lance Taylor  <ian@airs.com>
+
+       * c-common.def: Move FOR_STMT, WHILE_STMT, DO_STMT, BREAK_STMT,
+       CONTINUE_STMT, and SWITCH_STMT to cp/cp-tree.def.
+       * c-common.h (WHILE_COND, WHILE_BODY): Move to cp/cp-tree.h.
+       (DO_COND, DO_BODY): Likewise.
+       (FOR_INIT_STMT, FOR_COND, FOR_EXPR, FOR_BODY): Likewise.
+       (SWITCH_STMT_COND, SWITCH_STMT_BODY, SWITCH_STMT_TYPE): Likewise.
+       (c_common_stmt_codes): Remove FOR_STMT, WHILE_STMT, DO_STMT,
+       BREAK_STMT, CONTINUE_STMT, and SWITCH_STMT.
+       (build_continue_stmt, build_break_stmt): Don't declare.
+       (c_do_switch_warnings): Update declaration.
+       * c-gimplify.c (enum bc_t): Remove.
+       (struct c_gimplify_ctx, ctxp): Remove.
+       (push_context, pop_context): Remove static functions.
+       (c_genericize): Don't call push_context or pop_context.
+       (begin_bc_block, finish_bc_block): Remove static functions.
+       (build_bc_goto): Likewise.
+       (gimplify_c_loop): Likewise.
+       (gimplify_for_stmt, gimplify_while_stmt): Likewise.
+       (gimplify_do_stmt, gimplify_switch_stmt): Likewise.
+       (c_gimplify_expr): Remove handling of FOR_STMT, WHILE_STMT,
+       DO_STMT, SWITCH_STMT, CONTINUE_STMT, BREAK_STMT.
+       * c-common.c (c_do_switch_warnings): Rename from
+       c_do_switch_warnings_1.
+       (c_do_switch_warnings) [old version]: Remove.
+       (c_do_switch_expr_warnings): Remove.
+       * c-typeck.c (c_finish_case): Call new c_do_switch_warnings
+       function instead of c_do_switch_expr_warnings.
+       * c-dump.c (c_dump_tree): Remove handling of BREAK_STMT,
+       CONTINUE_STMT, DO_STMT, FOR_STMT, SWITCH_STMT, and WHILE_STMT.
+       * c-pretty-print.c (pp_c_statement): Likewise.
+       * c-semantics.c (build_break_stmt, build_continue_stmt): Remove.
+
+2005-04-08  Diego Novillo  <dnovillo@redhat.com>
+
+       Merge from tree-cleanup-branch: VRP, store CCP, store
+           copy-prop, incremental SSA updating of FUD chains and
+           newly exposed symbols.
+
+       * Makefile.in (tree-ssa-copy.o): Depend on tree-ssa-propagate.h.
+       (OBJS-common): Add tree-vrp.o.
+       (tree-vrp.o): New rule.
+       * basic-block.h (nearest_common_dominator_for_set): Declare.
+       * common.opt (ftree-store-ccp): New flag.
+       (ftree-copy-prop): New flag.
+       (ftree-vrp): New flag.
+       (ftree-store-copy-prop): New flag.
+       * dominance.c (nearest_common_dominator_for_set): New.
+       * domwalk.c (walk_dominator_tree): Only traverse
+       statements in blocks marked in walk_data->interesting_blocks.
+       * domwalk.h (struct dom_walk_data): Add field interesting_blocks.
+       * fold-const.c (fold): Handle ASSERT_EXPR.
+       * opts.c (decode_options): Set flag_tree_copy_prop at -O1.
+       Set flag_tree_store_ccp, flag_tree_store_copy_prop and
+       flag_tree_vrp at -O2.
+       * timevar.def (TV_TREE_VRP): Define.
+       (TV_TREE_COPY_PROP): Define.
+       (TV_TREE_STORE_COPY_PROP): Define.
+       (TV_TREE_SSA_INCREMENTAL): Define.
+       (TV_TREE_STORE_CCP): Define.
+       * tree-cfg.c (tree_can_merge_blocks_p): Remove reference
+       to kill_redundant_phi_nodes from comment.
+       (verify_expr): Handle ASSERT_EXPR.
+       * tree-dfa.c (mark_new_vars_to_rename): Remove second
+       argument.  Update all users.
+       (mark_call_clobbered_vars_to_rename): Remove.  Update all
+       users.
+       * tree-flow-inline.h (unmodifiable_var_p): New.
+       * tree-flow.h (enum value_range_type): Declare.
+       (struct value_range_def): Declare.
+       (value_range): Declare.
+       (remove_all_phi_nodes_for): Remove.  Update all users.
+       (find_phi_node_for): Declare.
+       (add_type_alias): Declare.
+       (count_uses_and_derefs): Declare.
+       (kill_redundant_phi_nodes): Remove.
+       (rewrite_into_ssa): Remove.
+       (rewrite_def_def_chains): Remove.
+       (update_ssa, register_new_name_mapping, create_new_def_for,
+       need_ssa_update_p, name_registered_for_update_p,
+       release_ssa_name_after_update_ssa, dump_repl_tbl,
+       debug_repl_tbl, dump_names_replaced_by,
+       debug_names_replaced_by, mark_sym_for_renaming,
+       mark_set_for_renaming, get_current_def, set_current_def,
+       get_value_range, dump_value_range, debug_value_range,
+       dump_all_value_ranges, debug_all_value_ranges,
+       expr_computes_nonzero, loop_depth_of_name,
+       unmodifiable_var_p): Declare.
+       * tree-gimple.c (is_gimple_formal_tmp_rhs): Handle
+       ASSERT_EXPR.
+       * tree-into-ssa.c (block_defs_stack): Update comment.
+       (old_ssa_names, new_ssa_names, old_virtual_ssa_names,
+       syms_to_rename, names_to_release, repl_tbl,
+       need_to_initialize_update_ssa_p, need_to_update_vops_p,
+       need_to_replace_names_p): New locals.
+       (NAME_SETS_GROWTH_FACTOR): Define.
+       (struct repl_map_d): Declare.
+       (struct mark_def_sites_global_data): Add field
+       interesting_blocks.
+       (enum rewrite_mode): Declare.
+       (REGISTER_DEFS_IN_THIS_STMT): Define.
+       (compute_global_livein): Use last_basic_block instead of
+       n_basic_blocks.
+       (set_def_block): Remove last argument.  Update all callers.
+       (prepare_use_operand_for_rename): Remove.  Update all callers.
+       (prepare_def_operand_for_rename): Remove.  Update all callers.
+       (symbol_marked_for_renaming): New.
+       (is_old_name): New.
+       (is_new_name): New.
+       (repl_map_hash): New.
+       (repl_map_eq): New.
+       (repl_map_free): New.
+       (names_replaced_by): New.
+       (add_to_repl_tbl): New.
+       (add_new_name_mapping): New.
+       (mark_def_sites): Assume that all the operands in the
+       statement are in normal form.
+       (find_idf): Assert that the block in the stack is valid.
+       (get_default_def_for): New.
+       (insert_phi_nodes_for): Add new argument 'update_p'.
+       Add documentation.
+       If update_p is true, add a new mapping between the LHS of
+       each new PHI and the name that it replaces.
+       (insert_phi_nodes_1): Only call find_idf if needed.
+       (get_reaching_def): Call get_default_def_for.
+       (rewrite_operand): Remove.
+       (rewrite_stmt): Do nothing if REGISTER_DEFS_IN_THIS_STMT
+       and REWRITE_THIS_STMT are false.
+       Assume that all the operands in the statement are in
+       normal form.
+       (rewrite_add_phi_arguments): Don't use PHI_REWRITTEN.
+       (rewrite_virtual_phi_arguments): Remove.
+       (invalidate_name_tags): Remove.
+       (register_new_update_single, register_new_update_set,
+       rewrite_update_init_block, replace_use,
+       rewrite_update_fini_block, rewrite_update_stmt,
+       rewrite_update_phi_arguments): New.
+       rewrite_blocks): Remove argument 'fix_virtual_phis'.
+       Add arguments 'entry', 'what' and 'blocks'.
+       Initialize the dominator walker according to 'what' and
+       'blocks'.
+       Start the dominator walk at 'entry'.
+       (mark_def_site_blocks): Add argument 'interesting_blocks'.
+       Use it to configure the dominator walker.
+       (rewrite_into_ssa): Remove argument 'all'.
+       Make internal.
+       (rewrite_all_into_ssa): Remove.
+       (rewrite_def_def_chains): Remove.
+       (mark_def_interesting, mark_use_interesting,
+       prepare_phi_args_for_update, prepare_block_for_update,
+       prepare_def_site_for, prepare_def_sites,
+       dump_names_replaced_by, debug_names_replaced_by,
+       dump_repl_tbl, debug_repl_tbl, init_update_ssa,
+       delete_update_ssa, create_new_def_for,
+       register_new_name_mapping, mark_sym_for_renaming,
+       mark_set_for_renaming, need_ssa_update_p,
+       name_registered_for_update_p, ssa_names_to_replace,
+       release_ssa_name_after_update_ssa,
+       insert_updated_phi_nodes_for, update_ssa): New.
+       * tree-loop-linear.c (linear_transform_loops): Call
+       update_ssa instead of rewrite_into_ssa.
+       * tree-optimize.c (vars_to_rename): Remove.
+       Update all users.
+       (init_tree_optimization_passes): Replace
+       pass_redundant_phi with pass_copy_prop.
+       Add pass_vrp.
+       Replace pass_ccp with pass_store_ccp.
+       Add pass_store_copy_prop after pass_store_ccp.
+       (execute_todo): If the TODO_ flags don't include updating
+       the SSA form, assert that it does not need to be updated.
+       Call update_ssa instead of rewrite_into_ssa and
+       rewrite_def_def_chains.
+       If TODO_verify_loops is set, call verify_loop_closed_ssa.
+       (tree_rest_of_compilation):
+       * tree-pass.h (TODO_dump_func, TODO_ggc_collect,
+       TODO_verify_ssa, TODO_verify_flow, TODO_verify_stmts,
+       TODO_cleanup_cfg): Renumber.
+       (TODO_verify_loops, TODO_update_ssa,
+       TODO_update_ssa_no_phi, TODO_update_ssa_full_phi,
+       TODO_update_ssa_only_virtuals): Define.
+       (pass_copy_prop, pass_store_ccp, pass_store_copy_prop, pass_vrp):
+       Declare.
+       * tree-phinodes.c (make_phi_node): Update documentation.
+       (remove_all_phi_nodes_for): Remove.
+       (find_phi_node_for): New.
+       * tree-pretty-print.c (dump_generic_node): Handle ASSERT_EXPR.
+       * tree-scalar-evolution.c (follow_ssa_edge_in_rhs): Likewise.
+       (interpret_rhs_modify_expr): Likewise.
+       * tree-sra.c (decide_instantiations): Mark all symbols in
+       SRA_CANDIDATES for renaming.
+       (mark_all_v_defs_1): Rename from mark_all_v_defs.
+       (mark_all_v_defs): New function.  Update all users to call it 
+       with the whole list of scalarized statements, not just the
+       first one.
+       * tree-ssa-alias.c (count_ptr_derefs): Make extern.
+       (compute_flow_insensitive_aliasing): If the tag is
+       unmodifiable and the variable isn't or vice-versa, don't
+       make them alias of each other.
+       (setup_pointers_and_addressables): If the type tag for
+       VAR is about to change, mark the old one for renaming.
+       (add_type_alias): New.
+       * tree-ssa-ccp.c: Document SSA-CCP and STORE-CCP.
+       (ccp_lattice_t): Rename from latticevalue.
+       (value): Remove.  Update all users.
+       (const_val): New local variable.
+       (do_store_ccp): New local variable.
+       (dump_lattice_value): Handle UNINITIALIZED.
+       (debug_lattice_value): New.
+       (get_default_value): Re-write.
+       (set_lattice_value): Re-write.
+       (def_to_varying): Remove.  Update all users.
+       (likely_value): Return VARYING for statements that make
+       stores when STORE_CCP is false.
+       Return VARYING for any statement other than MODIFY_EXPR,
+       COND_EXPR and SWITCH_EXPR.
+       (ccp_initialize): Re-write.
+       (replace_uses_in, replace_vuse_in, substitute_and_fold):
+       Move to tree-ssa-propagate.c.
+       (ccp_lattice_meet): Handle memory stores when
+       DO_STORE_CCP is true.
+       (ccp_visit_phi_node): Likewise.
+       (ccp_fold): Likewise.
+       (evaluate_stmt): Likewise.
+       (visit_assignment): Likewise.
+       (ccp_visit_stmt): Likewise.
+       (execute_ssa_ccp): Add argument 'store_ccp'.  Copy it
+       into DO_STORE_CCP.
+       (do_ssa_ccp): New.
+       (pass_ccp): Use it.
+       (do_ssa_store_ccp): New.
+       (gate_store_ccp): New.
+       (pass_store_ccp): Declare.
+       * tree-ssa-copy.c: Include tree-ssa-propagate.h.
+       (may_propagate_copy): Reformat.
+       Don't abort if ORIG is a virtual and DEST isn't.
+       If NEW does not have alias information but DEST does,
+       copy it.
+       (copy_of, cached_last_copy_of, do_store_copy_prop, enum
+       copy_prop_kind, which_copy_prop): Declare.
+       (stmt_may_generate_copy, get_copy_of_val,
+       get_last_copy_of, set_copy_of_val, dump_copy_of,
+       copy_prop_visit_assignment, copy_prop_visit_cond_stmt,
+       copy_prop_visit_stmt, copy_prop_visit_phi_node,
+       init_copy_prop, fini_copy_prop, execute_copy_prop,
+       gate_copy_prop, do_copy_prop, gate_store_copy_prop,
+       store_copy_prop): New.
+       (pass_copy_prop, pass_store_copy_prop): Declare.
+       * tree-ssa-dom.c (struct opt_stats_d): Add fields
+       'num_const_prop' and 'num_copy_prop'.
+       (cprop_operand): Update them.
+       (dump_dominator_optimization_stats): Dump them.
+       (tree_ssa_dominator_optimize): Call update_ssa instead of
+       rewrite_into_ssa.
+       (loop_depth_of_name): Declare extern.
+       (simplify_cond_and_lookup_avail_expr): Guard against NULL
+       values for LOW or HIGH.
+       (cprop_into_successor_phis): Only propagate if NEW != ORIG.
+       (record_equivalences_from_stmt): Call expr_computes_nonzero.
+       (cprop_operand): Only propagate if VAL != OP.
+       * tree-ssa-dse.c (dse_optimize_stmt): Mark symbols in removed
+       statement for renaming.
+       * tree-ssa-loop-im.c (move_computations): Call update_ssa.
+       * tree-ssa-loop-ivopts.c (rewrite_address_base): Call
+       add_type_alias if necessary.
+       Call mark_new_vars_to_rename.
+       (tree_ssa_iv_optimize): If new symbols need to be renamed,
+       mark every statement updated, call update_ssa and
+       rewrite_into_loop_closed_ssa.
+       * tree-ssa-loop-manip.c (add_exit_phis): Do not remove DEF_BB
+       from LIVEIN if VAR is a virtual.
+       * tree-ssa-loop.c (tree_loop_optimizer_init): Call update_ssa.
+       * tree-ssa-operands.c (get_expr_operands): Handle ASSERT_EXPR.
+       (get_call_expr_operands): Reformat statement.
+       (add_stmt_operand): Don't create V_MAY_DEFs for read-only
+       symbols.
+       * tree-ssa-propagate.c (ssa_prop_init): Initialize
+       SSA_NAME_VALUE for every name.
+       (first_vdef, stmt_makes_single_load, stmt_makes_single_store,
+       get_value_loaded_by): New.
+       (replace_uses_in, replace_vuses_in, replace_phi_args_in,
+       substitute_and_fold): Move from tree-ssa-ccp.c.
+       * tree-ssa-propagate.h (struct prop_value_d, prop_value_t,
+       first_vdef, stmt_makes_single_load, stmt_makes_single_store,
+       get_value_loaded_by, replace_uses_in, substitute_and_fold):
+       Declare.
+       * tree-ssa.c (verify_use): Fix error message.
+       (propagate_into_addr, replace_immediate_uses, get_eq_name,
+       check_phi_redundancy, kill_redundant_phi_nodes,
+       pass_redundant_phi): Remove.  Update all users.
+       * tree-vect-transform.c (vect_create_data_ref_ptr): Call
+       add_type_alias, if necessary.
+       * tree-vectorizer.h (struct _stmt_vect_info): Update
+       documentation for field 'memtag'.
+       * tree-vrp.c: New file.
+       * tree.def (ASSERT_EXPR): Define.
+       * tree.h (ASSERT_EXPR_VAR): Define.
+       (ASSERT_EXPR_COND): Define.
+       (SSA_NAME_VALUE_RANGE): Define.
+       (struct tree_ssa_name): Add field 'value_range'.
+       (PHI_REWRITTEN): Remove.
+       (struct tree_phi_node): Remove field 'rewritten'.
+       * doc/invoke.texi (-fdump-tree-storeccp, -ftree-copy-prop,
+       -ftree-store-copy-prop): Document.
+       * doc/tree-ssa.texi: Remove broken link to McCAT's compiler.
+       Document usage of update_ssa.
+
+2005-04-08  David Edelsohn  <edelsohn@gnu.org>
+
+       PR target/20814
+       * config/rs6000/predicates.md (altivec_register_operand): Accept
+       SUBREG. 
+       (and64_operand): Do not limit CONST_INT to mask64_operand.
+       (and64_2_operand): Do not limit CONST_INT to mask64_1or2_operand.
+       (and_operand): Do not limit CONST_INT to mask_operand.
+
+2005-04-09  Hans-Peter Nilsson  <hp@axis.com>
+
+       PR rtl-optimization/20466
+       * flow.c (invalidate_mems_from_set): Handle a MEM by checking it
+       for overlap of the address of each list member.
+       (mark_set_1): Call invalidate_mems_from_set for MEMs too.
+
+2005-04-08  Mike Stump  <mrs@apple.com>
+
+       * config/darwin.c (indirect_data): Fix typo in strncmp logic.
+       
+       * config/rs6000/rs6000.c (rs6000_emit_prologue): Use 5 nops,
+       instead of 4.
+
 2005-04-08  Kazu Hirata  <kazu@cs.umass.edu>
 
        * c-tree.h (C_LANG_TREE_NODE_CHAIN_NEXT): Remove.
 
        * tree.h (STRIP_MAIN_TYPE_NOPS): Remove.
 
+       * genattrtab.c (attr_desc): Remove negative_ok and unsigned_p.
+       (check_attr_value, write_attr_get, write_expr_attr_cache,
+       find_attr, make_internal_attr): Don't reference negative_ok or
+       unsigned_p.
+       * genattrtab.h (ATTR_NEGATIVE_OK, ATTR_UNSIGNED,
+       ATTR_FUNC_UNITS, ATTR_BLOCKAGE): Remove.
+       (ATTR_STATIC): Adjust the value.
+
+       * c-common.h (C_ARTIFICIAL_STRING_P): Remove.
+
 2005-04-08  Ulrich Weigand  <uweigand@de.ibm.com>
 
        * config/s390/tpf.h (ASM_SPEC): Define.
        * config/mn10300/mn10300.opt: New file.
 
 2005-04-05  Eric Botcazou  <ebotcazou@libertysurf.fr>
-            Sebastian Pop <sebastian.pop@cri.ensmp.fr>
+           Sebastian Pop <sebastian.pop@cri.ensmp.fr>
 
        PR tree-optimization/19903
        * tree-chrec.c (chrec_convert): Return chrec_dont_know for constants
        that don't fit in their type after conversion.
 
-2005-04-05 Uros Bizjak <uros@kss-loka.si>
+2005-04-05  Uros Bizjak <uros@kss-loka.si>
 
        PR target/20421
        * config/i386/i386.md (frndintxf2_floor, frndintxf2_ceil)
        CRIS epilogue as RTL.
        * config/cris/cris.md: Change all 0 in unspec 0 to
        CRIS_UNSPEC_PLT.
-       (CRIS_UNSPEC_PLT, CRIS_UNSPEC_FRAME_DEALLOC): New constants.
+       (CRIS_UNSPEC_PLT, CRIS_UNSPEC_FRAME_DEALLOC): New constants.
        ("*cris_load_multiple", "cris_frame_deallocated_barrier"): New
        patterns.
        ("return"): Change to define_expand.  Call cris_expand_return for