+2005-04-25 Steven Bosscher <stevenb@suse.de>
+
+ Fix PR tree-optimization/21173
+
+ * tree-ssa-pre.c (create_expression_by_pieces): Simplify code.
+ Unshare expression we pass to force_gimple_operand.
+
+2005-04-25 J"orn Rennecke <joern.rennecke@st.com>
+ Stephen Clarke <stevec@superh.com>
+ Roger Sayle <roger@eyesopen.com>
+
+ PR rtl-optimization/20413
+ * cfgrtl.c (redirect_edge_and_branch): Use Pmode instead of
+ VOIDmode for LABEL_REF.
+ * final.c (shorten_branches): Likewise.
+ * jump.c (mark_all_labels, redirect_exp_1): Likewise.
+ * loop.c (reg_dead_after_loop): Likewise.
+ * varasm.c (decode_addr_const): Likewise.
+ * doc/rtl.texi: Document mode requirement for LABEL_REF.
+
+2005-04-25 Ralf Corsepius <ralf.corsepius@rtems.org>
+
+ * config.gcc (avr-*-*): Remove redundant "case".
+
+2005-04-25 Kazu Hirata <kazu@cs.umass.edu>
+
+ * tree-vect-analyze.c (vect_mark_relevant): Take
+ VEC(tree,heap) instead of varray_type as an argument.
+ (vect_mark_stmts_to_be_vectorized): Change the type of
+ worklist to VEC(tree,heap). Adjust uses of worklist.
+
+2005-04-24 Devang Patel <dpatel@apple.com>
+
+ * config/rs6000/darwin.h (ASM_OUTPUT_MAX_SKIP_ALIGN): New.
+
+2005-04-24 Ian Lance Taylor <ian@airs.com>
+
+ * c-semantics.c (build_stmt): Remove test of specific tree codes
+ for TREE_SIDE_EFFECTS handling.
+
+2005-04-24 Per Bothner <per@bothner.com>
+
+ * c-opts.c (finish_options): Make the line-number of the <built-in>
+ location 0, as assumed elsewhere, rather than 1.
+
+2005-04-24 Kazu Hirata <kazu@cs.umass.edu>
+
+ * tree-ssa-uncprop.c (equiv_stack): Change the type o
+ VEC(tree,heap).
+ (tree_ssa_uncprop, uncprop_finalize_block,
+ uncprop_initialize_block): Update uses of equiv_stack.
+
+2005-04-24 Richard Henderson <rth@redhat.com>
+
+ PR rtl-opt/21163
+ * simplify-rtx.c (simplify_binary_operation) <IOR>: Check
+ for SCALAR_INT_MODE_P instead of not MODE_CC before returning
+ constm1_rtx.
+ <AND, LSHIFTRT, UMIN>: Use CONST0_RTX.
+ <UDIV, UMOD>: Use CONST0_RTX and CONST1_RTX.
+ <DIV, MOD>: Likewise.
+
+2005-04-24 Kaveh R. Ghazi <ghazi@caip.rutgers.edu>
+
+ * collect2.c (main): Unlock the stdio streams.
+ * gcc.c (main): Likewise.
+ * gcov-dump.c (main): Likewise.
+ * gcov.c (main): Likewise.
+ * gen-protos.c (main): Likewise.
+ * gensupport.c (init_md_reader_args_cb): Likewise.
+ * protoize.c (main): Likewise.
+ * toplev.c (general_init): Likewise.
+
+2005-04-24 Jakub Jelinek <jakub@redhat.com>
+
+ PR middle-end/20991
+ * cgraph.h (cgraph_local_info): Add vtable_method field.
+ * varasm.c (mark_decl_referenced): If cgraph_global_info_ready
+ and node is vtable_method, finalized and not reachable, don't do
+ anything.
+
+2005-04-24 Kazu Hirata <kazu@cs.umass.edu>
+
+ * tree-ssa-copy.c (copy_prop_visit_cond_stmt): Use
+ COMPARISON_CLASS_P.
+ * tree-ssa-pre.c (create_value_expr_from): Use
+ CONSTANT_CLASS_P and REFERENCE_CLASS_P.
+ * tree-ssa-propagate.c (stmt_makes_single_load,
+ stmt_makes_single_store): Use REFERENCE_CLASS_P.
+ * tree-vect-transform.c (vect_is_simple_cond): Use
+ COMPARISON_CLASS_P.
+ * tree-vrp.c (extract_range_from_assert,
+ build_assert_expr_for, fp_predicate, has_assert_expr): Use
+ COMPARISON_CLASS_P.
+
+ * tree-ssa-live.c (build_tree_conflict_graph): Change the type
+ of tpa_to_clear to VEC(int,heap). Update uses of
+ tpa_to_clear. Free tpa_to_clear at the end.
+
+2005-04-24 Andrew Pinski <pinskia@physics.uc.edu>
+
+ * tree.h (TREE_THIS_VOLATILE): Document the effect on a
+ function decl.
+
+2005-04-24 Nathan Sidwell <nathan@codesourcery.com>
+
+ * config/rs6000/rs6000.c (rs6000_override_options): Use gcc_assert
+ and gcc_unreachable as appropriate.
+ (num_insns_constant, output_vec_const_move,
+ build_mask64_2_operands, rs6000_output_dwarf_dtprel,
+ rs6000_emit_set_const, rs6000_emit_move,
+ spe_build_register_parallel, function_arg,
+ rs6000_move_block_from_reg, altivec_expand_predicate_builtin,
+ spe_expand_predicate_builtin, spe_expand_evsel_builtin,
+ rs6000_expand_builtin, spe_init_builtins, altivec_init_builtins,
+ rs6000_common_init_builtins, expand_block_clear,
+ expand_block_move, validate_condition_mode, ccr_bit, extract_MB,
+ extract_ME, rs6000_get_some_local_dynamic_name,
+ rs6000_output_function_entry, print_operand,
+ print_operand_address, rs6000_generate_compare, rs6000_emit_sCOND,
+ output_cbranch, output_e500_flip_gt_bit,
+ rs6000_emit_vector_compare, rs6000_emit_vector_compare,
+ rs6000_emit_cmove, rs6000_emit_minmax, rs6000_split_multireg_move,
+ compute_save_world_info, rs6000_stack_info,
+ rs6000_emit_load_toc_table, rs6000_frame_related,
+ spe_synthesize_frame_save, rs6000_emit_epilogue,
+ rs6000_output_function_epilogue, rs6000_hash_constant, output_toc,
+ output_function_profiler, rs6000_trampoline_size,
+ rs6000_initialize_trampoline, find_addr_reg,
+ rs6000_machopic_legitimize_pic_address,
+ rs6000_initial_elimination_offset,
+ rs6000_dbx_register_number): Likewise.
+ * config/rs6000/rs6000.md (*fix_truncdfsi2_internal,
+ *movdf_hardfloat32, *movdf_softfloat32, *fix_trunctfsi2_internal,
+ *movti_power, *movti_string, call, call_value, sibcall,
+ sibcall_value): Likewise.
+ * config/rs6000/spe.md (*movdf_e500_double,
+ *movv2si_internal): Likewise.
+ * config/rs6000/rs6000.h (PREFERRED_RELOAD_CLASS): Remove 'abort'
+ from comment.
+
+2005-04-24 Richard Henderson <rth@redhat.com>
+
+ PR target/21101
+ * config/i386/i386.h (CANNOT_CHANGE_MODE_CLASS): Move guts to ...
+ * config/i386/i386.c (ix86_cannot_change_mode_class): ... here.
+ Deny modes smaller than 4 bytes.
+ * config/i386/i386-protos.h: Update.
+
+2005-04-24 Ralf Corsepius <ralf.corsepius@rtems.org>
+
+ * config.gcc (h8300-*-rtems*): Add h8300-*-rtemscoff*.
+ Switch h8300-*-rtems* to ELF.
+
+2005-04-24 Kazu Hirata <kazu@cs.umass.edu>
+
+ * vec.h (VEC_safe_grow): Replace grow with safe_grow.
+
+2005-04-23 Kazu Hirata <kazu@cs.umass.edu>
+
+ * ipa-inline.c, tree-ssa-operands.h: Fix comment typos.
+
+2005-04-23 Richard Guenther <rguenth@gcc.gnu.org>
+
+ PR middle-end/21082
+ * fold-const.c: Fold &a[i]-&a[j] to i-j.
+
+2005-04-23 Zdenek Dvorak <dvorakz@suse.cz>
+
+ * tree-ssa-loop-niter.c (tree_simplify_using_condition): Expand simple
+ definitions of ssa names in condition. Split recusive part to ...
+ (tree_simplify_using_condition_1): New function.
+ (expand_simple_operations): New function.
+
+2005-04-23 Zdenek Dvorak <dvorakz@suse.cz>
+
+ * tree-ssa-loop-ivopts.c (struct cost_pair): Add value field.
+ (find_interesting_uses_cond): Do not use integer_zerop and
+ integer_nonzerop to check for integer constants.
+ (set_use_iv_cost): Record the value field.
+ (determine_use_iv_cost_generic, determine_use_iv_cost_address,
+ determine_use_iv_cost_outer): Set the value field of the cost pair.
+ (may_eliminate_iv): Do not return the comparison code.
+ (iv_elimination_compare): New function.
+ (determine_use_iv_cost_condition): Set the value field. Record
+ noneliminable invariants correctly.
+ (rewrite_use_compare, rewrite_use_outer): Use the value field.
+
+2005-04-23 DJ Delorie <dj@redhat.com>
+
+ * diagnostic.c (warning): Accept parameter to classify warning option.
+ (warning0): New, for when a pointer to an error() like function is needed.
+ * errors.c (warning): Likewise.
+ * errors.h (warning, warning0): Adjust prototypes.
+ * toplev.h (warning, warning0): Likewise.
+
+ * attribs.c, builtins.c, c-common.c, c-decl.c, c-format.c,
+ c-gimplify.c, c-lex.c, c-objc-common.c, c-opts.c, c-parser.c,
+ c-pragma.c, c-typeck.c, calls.c, cgraph.c, coverage.c, emit-rtl.c,
+ fold-const.c, fortran/trans-decl.c, function.c, gcse.c,
+ genautomata.c, haifa-sched.c, opts.c, passes.c, regclass.c,
+ reload1.c, stmt.c, stor-layout.c, toplev.c, tree-cfg.c,
+ tree-dump.c, tree-inline.c, tree-mudflap.c, tree-optimize.c,
+ tree-ssa.c, tree.c, varasm.c: Adjust warning() callers.
+
+ * config/alpha/alpha.c, config/arc/arc.c, config/arm/arm.c,
+ config/avr/avr.c, config/bfin/bfin.c, config/c4x/c4x-c.c,
+ config/c4x/c4x.c, config/cris/cris.c, config/darwin-c.c,
+ config/darwin.c, config/darwin.h, config/h8300/h8300.c,
+ config/i386/cygming.h, config/i386/djgpp.h, config/i386/i386.c,
+ config/i386/winnt.c, config/ia64/ia64-c.c, config/ia64/ia64.c,
+ config/ip2k/ip2k.c, config/m32r/m32r.c, config/m68hc11/m68hc11.c,
+ config/m68k/m68k.c, config/mcore/mcore.c, config/mips/mips.c,
+ config/mmix/mmix.c, config/ns32k/ns32k.c, config/pa/pa-hpux11.h,
+ config/pa/pa.c, config/rs6000/aix43.h, config/rs6000/aix51.h,
+ config/rs6000/aix52.h, config/rs6000/darwin.h,
+ config/rs6000/rs6000-c.c, config/rs6000/rs6000.c,
+ config/s390/s390.c, config/sh/sh.c, config/sh/sh.h,
+ config/sh/symbian.c, config/sol2-c.c, config/sol2.c,
+ config/stormy16/stormy16.c, config/v850/v850-c.c,
+ config/v850/v850.c, config/xtensa/xtensa.c: Adjust warning()
+ callers.
+
+2005-04-23 Richard Henderson <rth@redhat.com>
+
+ PR rtl-opt/21102
+ * simplify-rtx.c (simplify_binary_operation): Fix mode check before
+ performing some integral scalar simplifications.
+
+2005-04-23 Richard Henderson <rth@redhat.com>
+
+ PR target/21099
+ * config/i386/i386.c (ix86_split_to_parts): Use proper mode when
+ simplifying CONST_VECTOR.
+
+2005-04-23 Kazu Hirata <kazu@cs.umass.edu>
+
+ * tree-ssa-live.c (live_worklist): Take a stack allocated on
+ heap as an argument. Update uses of stack.
+ (calculate_live_on_entry): Allocate stack on heap.
+
+ * tree-ssa-live.c (build_tree_conflict_graph): Allocate
+ partition_link and tpa_nodes on heap.
+
+ * tree-ssa-dce.c (worklist): Change to VEC(tree,heap).
+ (mark_stmt_necessary, propagate_necessity,
+ mark_really_necessary_kill_operand_phis): Update uses of
+ worklist.
+ (tree_dce_init): Allocate worklist using VEC_alloc.
+ (tree_dce_done): Free worklist using VEC_free.
+
+2005-04-23 Mike Stump <mrs@apple.com>
+
+ * config/darwin.c (machopic_indirection_name): Don't use
+ quotes needlessly.
+ (darwin_emit_unwind_label): Use user_label_prefix instead of
+ "_".
+
+2005-04-23 Kazu Hirata <kazu@cs.umass.edu>
+
+ * final.c, ipa-inline.c, varasm.c: Fix comment typos.
+
+2005-04-23 Hans-Peter Nilsson <hp@axis.com>
+
+ * config.gcc <cris-*>: Specify .opt files.
+ * config/cris/cris.opt, config/cris/elf.opt, config/cris/aout.opt,
+ config/cris/linux.opt: New files.
+ * config/cris/aout.h (CRIS_SUBTARGET_SWITCHES)
+ (CRIS_SUBTARGET_LONG_OPTIONS): Don't define.
+ (TARGET_ELF): Override to 0.
+ (CRIS_SUBTARGET_HANDLE_OPTION): Override to handle -melinux and
+ -melinux-stacksize=N.
+ * config/cris/cris.c: (cris_handle_option): New function.
+ (TARGET_DEFAULT_TARGET_FLAGS): Override.
+ (TARGET_HANDLE_OPTION): Override to cris_handle_option.
+ (cris_override_options): Use MASK_*, not TARGET_MASK_*.
+ * config/cris/cris.h (TARGET_MASK_SVINTO, TARGET_SVINTO,
+ (TARGET_MASK_CCINIT, TARGET_CCINIT, TARGET_MASK_PDEBUG)
+ (TARGET_PDEBUG, TARGET_MASK_SIDE_EFFECT_PREFIXES)
+ (TARGET_SIDE_EFFECT_PREFIXES, TARGET_MASK_EXPAND_MUL)
+ (TARGET_EXPAND_MUL, TARGET_MASK_STACK_ALIGN, TARGET_STACK_ALIGN)
+ (TARGET_MASK_CONST_ALIGN, TARGET_CONST_ALIGN)
+ (TARGET_MASK_DATA_ALIGN, TARGET_DATA_ALIGN)
+ (TARGET_MASK_PROLOGUE_EPILOGUE, TARGET_PROLOGUE_EPILOGUE)
+ (TARGET_MASK_ETRAX4_ADD, TARGET_ETRAX4_ADD)
+ (TARGET_MASK_ALIGN_BY_32, TARGET_ALIGN_BY_32, TARGET_MASK_ELF)
+ (TARGET_ELF, TARGET_MASK_LINUX, TARGET_LINUX)
+ (TARGET_MASK_AVOID_GOTPLT, TARGET_AVOID_GOTPLT)
+ (TARGET_MASK_MUL_BUG, TARGET_MUL_BUG, TARGET_SWITCHES)
+ (CRIS_SUBTARGET_SWITCHES, TARGET_OPTIONS)
+ (CRIS_SUBTARGET_LONG_OPTIONS): Don't define.
+ (TARGET_LINUX): Define 0.
+ (TARGET_DEFAULT): Use MASK_*, not TARGET_MASK_*.
+ (CRIS_SUBTARGET_DEFAULT): Define to 0, not TARGET_MASK_ELF.
+ (CRIS_SUBTARGET_DEFAULT): New empty default macro.
+ * config/cris/linux.h (CRIS_SUBTARGET_SWITCHES): Don't define.
+ (TARGET_LINUX): Override to 1.
+ (CRIS_SUBTARGET_DEFAULT): Use MASK_*, not TARGET_MASK_*.
+
+2005-04-23 Nathan Sidwell <nathan@codesourcery.com>
+
+ * haifa-sched.c (schedule_block): Fix thinko in previous
+ assertification patch.
+
+2005-04-23 Richard Sandiford <rsandifo@redhat.com>
+
+ * config.gcc (hppa[12]*-*-hpux10*): Add pa/pa-hpux.opt to
+ $extra_options. Also add pa/pa-hpux1010.opt for hpux10.[1-9]*.
+ (hppa*64*-*-hpux11*): Add pa/pa-hpux1010.h to $tm_file. Add
+ pa/pa-hpux.opt, pa/pa-hpux1010.opt and pa/pa64-hpux.opt to
+ $extra_options. Also add pa/pa-hpux1111.opt for hpux11.[1-9]*.
+ (hppa[12]*-*-hpux11*): Add pa/pa-hpux1010.h to $tm_file. Add
+ pa/pa-hpux.opt to $extra_options. Also add pa/pa-hpux1111.opt
+ for hpux11.[1-9]*.
+ * config/pa/pa.h (architecture_type, rtx_def, pa_arch_string, pa_arch)
+ (pa_fixed_range_string, pa_cpu_string, pa_unix_string, target_flags)
+ (MASK_PA_11, MASK_DISABLE_FPREGS, TARGET_DISABLE_FPREGS)
+ (MASK_NO_SPACE_REGS, TARGET_NO_SPACE_REGS, MASK_JUMP_IN_DELAY)
+ (TARGET_JUMP_IN_DELAY, MASK_DISABLE_INDEXING, TARGET_DISABLE_INDEXING)
+ (MASK_PORTABLE_RUNTIME, TARGET_PORTABLE_RUNTIME, MASK_GAS, TARGET_GAS)
+ (MASK_SOFT_FLOAT, TARGET_SOFT_FLOAT, MASK_LONG_LOAD_STORE)
+ (TARGET_LONG_LOAD_STORE, MASK_FAST_INDIRECT_CALLS)
+ (TARGET_FAST_INDIRECT_CALLS, MASK_BIG_SWITCH, TARGET_BIG_SWITCH)
+ (MASK_PA_20, MASK_SIO, TARGET_SIO, MASK_GNU_LD, TARGET_GNU_LD)
+ (MASK_LONG_CALLS, TARGET_LONG_CALLS, TARGET_PA_11, TARGET_PA_20)
+ (TARGET_SWITCHES, SUBTARGET_SWITCHES, TARGET_OPTIONS)
+ (SUBTARGET_OPTIONS): Delete.
+ (TARGET_PA_10): Redefine in terms of TARGET_PA_11 and TARGET_PA_20.
+ (TARGET_SCHED_DEFAULT): Define to a PROCESSOR_* enum (PROCESSOR_8000)
+ instead of a string.
+ * config/pa/pa.c (pa_arch, pa_arch_string, pa_fixed_range_string)
+ (pa_cpu_string, pa_unix_string): Delete.
+ (pa_cpu): Initialize to TARGET_SCHED_DEFAULT.
+ (flag_pa_unix): Initialize based on TARGET_HPUX_11_11 and
+ TARGET_HPUX_10_10.
+ (TARGET_DEFAULT_TARGET_FLAGS, TARGET_HANDLE_OPTION): Override defaults.
+ (pa_handle_option): New function.
+ (override_options): Remove handling of -march=, -mfixed-range=,
+ -mschedule= and -munix=.
+ * config/pa/pa-hpux.h (SUBTARGET_SWITCHES): Delete.
+ * config/pa/pa-hpux1010.h (SUBTARGET_OPTIONS): Delete.
+ * config/pa/pa-hpux10.h (SUBTARGET_OPTIONS): Delete.
+ * config/pa/pa-hpux1111.h (SUBTARGET_OPTIONS): Delete.
+ * config/pa/pa-hpux11.h (SUBTARGET_OPTIONS): Delete.
+ * config/pa/pa64-hpux.h (SUBTARGET_SWITCHES): Delete.
+ * config/pa/pa64-start.h (TARGET_PA_11, TARGET_PA_20): #undef before
+ redefining.
+ * config/pa/pa.opt: New file.
+ * config/pa/pa-hpux.opt: New file.
+ * config/pa/pa-hpux1010.opt: New file.
+ * config/pa/pa-hpux1111.opt: New file.
+ * config/pa/pa64-hpux.opt: New file.
+
+2005-04-22 David S. Miller <davem@davemloft.net>
+
+ * rtl.h (CONST_DOUBLE): Fix comment, a CONST_DOUBLE holds an
+ integer when it's mode is VOIDmode not DImode.
+
+2005-04-22 Geoffrey Keating <geoffk@apple.com>
+
+ * config/rs6000/rs6000.md (sync_add<mode>_internal,
+ sync_addshort_internal, sync_sub<mode>_internal, sync_andsi_internal,
+ sync_anddi_internal, sync_boolsi_internal, sync_booldi_internal,
+ sync_boolc<mode>_internal, sync_boolc<mode>_internal2,
+ sync_boolcc<mode>_internal, sync_lock_test_and_set<mode>): Use
+ "bne- $-xxx" rather than local labels.
+ (sync_lock_release<mode>): Add second operand.
+ (lwsync): Use .long rather than a more meaningful opcode.
+ * doc/md.texi (Standard Names): Add description of second
+ parameter to sync_lock_test_and_set.
+
+2005-04-23 Kazu Hirata <kazu@cs.umass.edu>
+
+ PR tree-optimization/21088
+ * fold-const.c (fold_unary, fold_binary, fold_ternary):
+ Export.
+ * tree-vrp.c (compare_values): Use fold_binary to compare
+ pointers. Use boolean_type_node as the type of a comparison
+ expression being folded.
+ * tree.h: Add prototypes for fold_unary, fold_binary,
+ fold_ternary.
+
+ * tree-ssa-dom.c: Fix formatting.
+
+2005-04-22 Diego Novillo <dnovillo@redhat.com>
+
+ * Makefile.in (tree-into-ssa.o): Add dependency on PARAMS_H.
+ * lambda-code.c (perfect_nestify): Mark virtual operands in
+ the moved statement for renaming.
+ * params.def (PARAM_MIN_VIRTUAL_MAPPINGS): Define.
+ (PARAM_VIRTUAL_MAPPINGS_TO_SYMS_RATIO): Define.
+ * params.h (MIN_VIRTUAL_MAPPINGS): Define.
+ (VIRTUAL_MAPPINGS_TO_SYMS_RATIO): Define.
+ * tree-flow.h (struct var_ann_d): Update comments.
+ (rewrite_to_new_ssa_names_bb, rewrite_to_new_ssa_names,
+ allocate_ssa_names, find_phi_node_for, dump_tree_ssa,
+ debug_tree_ssa, debug_def_blocks, dump_tree_ssa_stats,
+ debug_tree_ssa_stats, rewrite_ssa_into_ssa,
+ dump_repl_tbl, debug_repl_tbl, dump_names_replaced_by,
+ debug_names_replaced_by): Remove declarations.
+ (delete_update_ssa, get_current_def, set_current_def): Declare.
+ (rewrite_into_loop_closed_ssa): Add new argument. Update
+ all callers.
+ * tree-into-ssa.c: Include params.h.
+ (old_virtual_ssa_names): Remove. Update all users.
+ (need_to_replace_names_p): Remove. Update all users.
+ (struct update_ssa_stats_d): Declare.
+ (update_ssa_stats): New local.
+ (dump_tree_ssa, debug_tree_ssa, debug_def_blocks,
+ dump_tree_ssa_stats, debug_tree_ssa_stats,
+ dump_update_ssa, debug_update_ssa,
+ dump_names_replaced_by, debug_names_replaced_by): Declare.
+ (get_current_def, set current_def): Make extern.
+ (is_old_name, is_new_name): Protect against references
+ past the end of the sets.
+ (add_new_name_mapping): Assert that OLD and NEW are
+ different SSA names for the same symbol.
+ When adding a virtual mapping, update stats for virtual
+ mapping heuristic.
+ (insert_phi_nodes_for): If UPDATE_P is true, create the
+ LHS of the new PHI by duplicating SSA name VAR.
+ (insert_phi_nodes_1): Remove. Update all users.
+ (insert_phi_nodes): Remove second argument. Update all
+ users.
+ (maybe_replace_use, maybe_replace_def): New.
+ (rewrite_update_stmt): Call them.
+ (mark_def_interesting): Remove calls to is_gimple_reg.
+ (prepare_phi_args_for_update): Remove. Update all users.
+ (prepare_block_for_update): Only process virtual operands
+ and GIMPLE registers in normal form.
+ (prepare_use_sites_for): New.
+ (prepare_names_to_update): Rename from prepare_def_sites.
+ Call prepare_use_sites_for.
+ (dump_update_ssa): Rename from dump_repl_tbl.
+ Update all users.
+ Show statistics for virtual mapping heuristic.
+ (debug_update_ssa): Rename from debug_debug_repl_tbl.
+ (init_update_ssa): Initialize UPDATE_SSA_STATS.
+ (delete_update_ssa): Make extern.
+ (mark_set_for_renaming): If the set is empty, do nothing.
+ (release_ssa_name_after_update_ssa): Update comment.
+ (insert_updated_phi_nodes_for): Do not remove existing
+ PHI nodes for symbols.
+ (switch_virtuals_to_full_rewrite_p): New.
+ (switch_virtuals_to_full_rewrite): New.
+ (update_ssa): Call them.
+ Clear REWRITE_THIS_STMT and REGISTER_DEFS_IN_THIS_STMT
+ for every statement before updating.
+ If all the names in NEW_SSA_NAMES have been marked for
+ removal, do nothing.
+ Only start at the top of the CFG if there are symbols in
+ SYMS_TO_RENAME.
+ (ssa_rewrite_finalize_block): Remove.
+ (ssa_register_new_def): Remove.
+ (ssa_rewrite_stmt): Remove.
+ (ssa_rewrite_phi_arguments): Remove.
+ (ssa_rewrite_initialize_block): Remove.
+ (ssa_mark_def_sites): Remove.
+ (ssa_mark_def_sites_initialize_block): Remove.
+ (ssa_mark_phi_uses): Remove.
+ (rewrite_ssa_into_ssa): Remove.
+ * tree-phinodes.c (find_phi_node_for): Remove.
+ * tree-ssa-loop-ivcanon.c (try_unroll_loop_completely):
+ Call update_ssa.
+ * tree-ssa-loop-unswitch.c (tree_ssa_unswitch_loops):
+ Remove calls to verify_dominators and
+ verify_loop_structure.
+ (tree_unswitch_single_loop): Call update_ssa.
+ * tree-ssa.c (verify_ssa): Assert that need_ssa_update_p
+ returns false.
+ Call verify_stmts.
+ (delete_tree_ssa): Assert that need_ssa_update_p returns
+ false.
+ * tree-vect-transform.c (vect_transform_loop): Call update_ssa.
+ * tree-vectorizer.c (allocate_new_names, rename_def_op,
+ free_new_names): Remove. Update all users.
+ (rename_use_op): Call get_current_def.
+ (rename_variables_in_bb): Do not handle any real or
+ virtual definition.
+ (slpeel_update_phis_for_duplicate_loop): Call
+ get_current_def and set_current_def instead of using
+ SSA_NAME_AUX.
+ (slpeel_update_phi_nodes_for_guard2): Reformat comments.
+ (slpeel_can_duplicate_loop_p): Call need_ssa_update_p,
+ ssa_names_to_replace and delete_update_ssa.
+ * doc/invoke.texi: Document --param min-virtual-mappings
+ and --param virtual-mappings-ratio.
+
+2005-04-22 Diego Novillo <dnovillo@redhat.com>
+
+ * tree-cfg.c (tree_duplicate_bb): Call create_new_def_for
+ for newly created PHI nodes.
+ Call create_new_def_for for every new V_MAY_DEF and
+ V_MUST_DEF on the copied statement.
+ (struct ssa_name_map_entry): Remove.
+ (ssa_name_map_entry_hash): Remove.
+ (ssa_name_map_entry_eq): Remove.
+ (allocate_ssa_names): Remove.
+ (rewrite_to_new_ssa_names_def): Remove.
+ (rewrite_to_new_ssa_names_use): Remove.
+ (rewrite_to_new_ssa_names_bb): Remove.
+ (rewrite_to_new_ssa_names): Remove.
+ (tree_duplicate_sese_region): Remove variables ver,
+ definitions, phi, ssa_name_map and bi.
+ Call need_ssa_update_p instead of any_marked_for_rewrite_p.
+ Call update_ssa.
+ * tree-ssa-dom.c (tree_ssa_dominator_optimize): Call
+ update_ssa instead of rewrite_ssa_into_ssa.
+ * tree-ssa-loop-manip.c (add_exit_phis_edge): Call
+ create_new_def_for.
+ (find_uses_to_rename_use): Add argument 'need_phis'.
+ (find_uses_to_rename_stmt): Do not scan virtual operands.
+ (find_uses_to_rename): Only scan PHI nodes for
+ non-virtual names.
+ (rewrite_into_loop_closed_ssa): Call update_ssa.
+ (check_loop_closed_ssa_use): Ignore virtual operands.
+ (check_loop_closed_ssa_stmt): Likewise.
+ (verify_loop_closed_ssa): Do nothing if CURRENT_LOOPS is
+ NULL.
+ (rename_variables, set_phi_def_stmts): Remove.
+ (tree_duplicate_loop_to_header_edge): Reformat comment.
+ Remove variables BB, I and DEFINITIONS.
+ Call need_ssa_update_p.
+ Call update_ssa.
+ (lv_adjust_loop_header_phi): Reformat comment.
+ * tree-ssanames.c (ssa_names_to_rewrite): Remove.
+ (marked_for_rewrite_p, any_marked_for_rewrite_p,
+ mark_for_rewrite, unmark_all_for_rewrite,
+ marked_ssa_names): Remove. Update all users.
+ (release_ssa_name): If VAR has been registered for SSA
+ updating, do nothing.
+ * tree-vrp.c (new_ssa_names, old_ssa_names): Remove.
+ (build_assert_expr_for): Call register_new_name_mapping.
+ (insert_range_assertions): Update call to update_ssa.
+ * tree.h (mark_for_rewrite, unmark_all_for_rewrite,
+ marked_for_rewrite_p, any_marked_for_rewrite_p,
+ marked_ssa_names): Remove.
+
+2005-04-22 Jeff Law <law@redhat.com>
+
+ * tree-ssa-dom.c (block_defs_stack): Remove, no longer needed.
+ (restore_currdefs_to_original_value): Likewise.
+ (register_definitions_for_stmt): Likewise.
+ (tree_ssa_dominator_optimize): No longer initialize CURRENT_DEF
+ for each variable. Do not allocate/free block_defs_stack either.
+ Do not iterate if we just thread jumps. Only iterate if the
+ tree_cleanup_cfg does useful work (temporary).
+ (dom_opt_initialize_block): No longer push a marker on
+ BLOCK_DEFS_STACK.
+ (dom_opt_finalize_block): Removal call to restore currdefs.
+ Relax restrictions for recording edge equivalences.
+ (record_equivalences_from_phis): No longer need to track
+ CURRENT_DEF.
+ (optimize_stmt): Similarly.
+ (thread_across_edge): Simplify by removing the requirement that
+ statements in the block we are threading through must be nops.
+ (initialize_hash_element): Handle GOTO_EXPR.
+
+2005-04-22 David S. Miller <davem@davemloft.net>
+
+ * sched-vis.c (print_value): Use CONST_DOUBLE_LOW and
+ CONST_DOUBLE_HIGH.
+ * config/sparc/sparc.c (sparc_rtx_costs): Likewise, and
+ fix check on CONST_DOUBLE mode. It should be VOIDmode
+ when it is representing an integer.
+
+2005-04-22 Nathan Sidwell <nathan@codesourcery.com>
+
+ * builtins.c (gimplify_va_arg_expr): Reword comments to avoid
+ 'abort'. Use gcc_assert and gcc_unreachable as appropriate.
+ * c-format.c (get_constant, decode_format_attr, get_flag_spec,
+ find_char_info_specifier_index,
+ find_length_info_modifier_index): Likewise.
+ * c-typeck.c (composite_type, pop_init_level): Likewise.
+ * combine.c (cant_combine_insn_p, try_combine): Likewise.
+ * cse.c (cse_insn): Likewise
+ * dominance.c (calc_dfs_tree): Likewise
+ dwarf2out.c (loc_descriptor_from_tree_1,
+ add_abstract_origin_attribute, force_decl_die,
+ force_type_die): Likewise
+ emit-rtl.c (operand_subword_force): Likewise
+ explow.c (hard_function_value): Likewise
+ expmed.c (store_bit_field, expand_divmod,
+ emit_store_flag_force): Likewise
+ expr.c (emit_move_multi_word, store_expr,
+ expand_expr_real_1): Likewise
+ final.c (this_is_asm_operands, shorten_branches, final_scan_insn,
+ output_operand): Likewise
+ flow.c (recompute_reg_usage): Likewise
+ * function.c (assign_stack_temp_for_type, assign_temp,
+ handle_epilogue_set): Likewise
+ * genextract.c (main): Likewise
+ * gimplify.c (mostly_copy_tree_r, gimplify_return_expr,
+ gimplify_modify_expr_rhs, gimplify_expr): Likewise
+ * haifa-sched.c (ready_lastpos, ready_remove_first, ready_element,
+ ready_remove, rm_line_notes, rm_other_notes,
+ schedule_block): Likewise
+ mips-tfile.c (copy_object, out_of_bounds): Likewise
+
+2005-04-22 David Edelsohn <edelsohn@gnu.org>
+
+ PR target/20813
+ * config/rs6000/default64.h (TARGET_DEFAULT): Add MASK_PPC_GFXOPT.
+ * config/rs6000/rs6000.c (processor_target_table): Rename rs64a to
+ rs64. Add MASK_PPC_GFXOPT to powerpc64 and rs64.
+ (rs6000_init_libfuncs): Set TFmode optabs to xlq names if
+ TARGET_XL_COMPAT.
+ * doc/invoke.texi (PowerPC options): Change rs64a to rs64.
+
+2005-04-22 Nathan Sidwell <nathan@codesourcery.com>
+
+ * lambda-code.c: Define VEC(int,heap), VEC(lambda_loop,heap).
+ (gcc_tree_to_linear_expression): Convert to heap allocated
+ vectors.
+ (gcc_loop_to_lambda_loop, gcc_loopnest_to_lambda_loopnest,
+ lbv_to_gcc_expression, lle_to_gcc_expression,
+ lambda_loopnest_to_gcc_loopnest, can_convert_to_perfect_nest,
+ perfect_nestify): Likewise.
+ lambda.h (gcc_loopnest_to_lambda_loopnest,
+ lambda_loopnest_to_gcc_loopnest): Likewise.
+ tree-loop-linear.c (linear_transform_loops): Likewise.
+
+2005-04-22 Eric Botcazou <ebotcazou@libertysurf.fr>
+
+ * config/sparc/predicates.md (arith_double_operand): Use
+ trunc_int_for_mode if HOST_BITS_PER_WIDE_INT >=64.
+ * config/sparc/sparc.md (movqi, movhi, movsi, movqi): Use gen_int_mode.
+ (DImode, DFmode constant splitters): Likewise. Remove code for
+ TARGET_ARCH64 && HOST_BITS_PER_WIDE_INT < 64.
+ (logical constant splitters): Use const_int_operand predicate.
+ (lshrsi3_extend): Remove code for TARGET_ARCH64 &&
+ HOST_BITS_PER_WIDE_INT < 64.
+
+2005-04-22 Nathan Sidwell <nathan@codesourcery.com>
+
+ * config/pa/pa.c (legitimize_pic_address): Use gcc_assert and
+ gcc_unreachable as appropriate.
+ (force_mode, emit_move_sequence, singlemove_string,
+ output_move_double, output_fp_move_double, find_addr_reg,
+ output_block_move, output_block_clear, output_and,
+ output_64bit_and, output_ior, output_64bit_ior, store_reg_modify,
+ pa_adjust_cost, pa_issue_rate, print_operand,
+ output_global_address, output_arg_descriptor, output_cbranch,
+ output_lbranch, output_bb, output_bvb, output_dbra, output_movb,
+ output_call): Likewise.
+ * config/pa/pa.md (call, call_value, sibcall, sibcall_value,
+ prefetch, prefetch_cc, prefetch_nocc): Likewise.
+
+2005-04-22 Zdenek Dvorak <dvorakz@suse.cz>
+
+ * Makefile.in (LIBGCOV): Add _gcov_interval_profiler,
+ _gcov_pow2_profiler and _gcov_one_value_profiler.
+ (tree-profile.o): Add GGC_H and gt-tree-profile.h dependency.
+ (GTFILES): Add $(srcdir)/tree-profile.c.
+ * gcov-io.h (__gcov_interval_profiler, __gcov_pow2_profiler,
+ __gcov_one_value_profiler): Declare.
+ * gimplify.c (force_gimple_operand): Check whether the statements
+ should be produced in ssa form.
+ (force_gimple_operand_bsi): New function.
+ * libgcov.c (__gcov_interval_profiler, __gcov_pow2_profiler,
+ __gcov_one_value_profiler): New functions.
+ * rtl-profile.c (rtl_gen_pow2_profiler): Only measure whether
+ the profiled value is a power of two or not.
+ * tree-cfg.c (tree_block_ends_with_condjump_p): Handle empty blocks.
+ * tree-flow.h (in_ssa_p): Declare.
+ (force_gimple_operand_bsi): Declare.
+ * tree-into-ssa.c (in_ssa_p): New variable.
+ (rewrite_into_ssa): Set in_ssa_p.
+ * tree-outof-ssa.c (rewrite_out_of_ssa): Set in_ssa_p.
+ * tree-profile.c: Include ggc.h and gt-tree-profile.h.
+ (gcov_type_node, tree_interval_profiler_fn, tree_pow2_profiler_fn,
+ tree_one_value_profiler_fn): New variables.
+ (tree_init_edge_profiler): Initialize the profiler function decls.
+ (tree_gen_edge_profiler): Use global gcov_type_node.
+ (prepare_instrumented_value): New function.
+ (tree_gen_interval_profiler, tree_gen_interval_profiler,
+ tree_gen_one_value_profiler): Call the library functions instead of
+ creating instrumentation code.
+ * tree.c (build_fn_decl): New function.
+ * tree.h (build_fn_decl): Declare.
+ * value-prof.c (rtl_divmod_values_to_profile,
+ rtl_find_values_to_profile, rtl_mod_pow2_value_transform,
+ tree_mod_pow2_value_transform, tree_find_values_to_profile):
+ Do not handle may_be_other and precise values of exponents at pow2
+ profiler.
+ (tree_mod_subtract_transform): Reflect that value field of
+ histogram has changed meaning.
+ (tree_divmod_values_to_profile): Record the values correctly.
+ (tree_values_to_profile): Update comment.
+ * value-prof.h (struct histogram_value_t): Remove pow2 data.
+
+2005-04-22 Joseph S. Myers <joseph@codesourcery.com>
+
+ * varasm.c (do_assemble_alias): Return early if TREE_ASM_WRITTEN
+ (decl).
+
+2005-04-22 Nathan Sidwell <nathan@codesourcery.com>
+
+ * config/i386/i386.md (length_immediate): Use gcc_assert or
+ gcc_unreachable, as appropriate.
+ (*movsi_1, *movqi_1, reload_outqi, *movdi_1_rex64, *pushsf,
+ *pushsf_rex64, *truncxfsf2_mixed, *truncxfsf2_i387,
+ *truncxfdf2_mixed, *truncxfdf2_i387, *adddi_1_rex64,
+ *adddi_2_rex64, *adddi_3_rex64, *adddi_4_rex64, *adddi_5_rex64,
+ *addsi_1, addsi_1_zext, *addsi_2, *addsi_2_zext, *addsi_3,
+ *addsi_3_zext, *addsi_4, *addsi_5, *addhi_1_lea, *addhi_1,
+ *addhi_2, *addhi_3, *addhi_4, *addhi_5, *addqi_1_lea, *addqi_1,
+ *addqi_1_slp, *addqi_2, *addqi_3, *addqi_4, *addqi_5, addqi_ext_1,
+ *addqi_ext_1_rex64, *anddi_1_rex64, *andsi_1, *andhi_1,
+ *ashldi3_1_rex64, *ashldi3_cmp_rex64, *ashlsi3_1, *ashlsi3_1_zext,
+ *ashlsi3_cmp, *ashlsi3_cmp_zext, *ashlhi3_1_lea, *ashlhi3_1,
+ *ashlhi3_cmp, *ashlqi3_1_lea, *ashlqi3_1, *ashlqi3_cmp,
+ pro_epilogue_adjust_stack_1, pro_epilogue_adjust_stack_rex64,
+ pro_epilogue_adjust_stack_rex64_2, prefetch, *prefetch_sse,
+ *prefetch_sse_rex): Likewise.
+ * config/i386/predicates.md (x86_64_immediate_operand,
+ x86_64_zext_immediate_operand, symbolic_operand,
+ no_seg_address_operand, aligned_operand,
+ memory_displacement_operand): Likewise.
+ * config/i386/sse.md (*mov<mode>_internal,
+ *movv2df_internal): Likewise.
+
+2005-04-22 Jan Hubicka <jh@suse.cz>
+
+ * Makefile.in (ipa.o, ipa-inline.o): New files.
+ * cgraph.h (cgraph_remove_unreachable_nodes, cgraph_postorder,
+ cgraph_decide_inlining_incrementally, cgraph_clone_inlined_nodes,
+ cgraph_mark_inline_edge, cgraph_default_inline_p): Declare.
+ * cgraphunit.c (cgraph_default_inline_p,
+ cgraph_decide_inlining_incrementally, ncalls_inlined,
+ nfunctions_inlined, initial_insns, overall_insns,
+ cgraph_estimate_size_after_inlining, cgraph_estimate_growth,
+ cgraph_clone_inlined_nodes, cgraph_mark_inline_edge,
+ cgraph_mark_inline, cgraph_check_inline_limits,
+ cgraph_default_inline_p, cgraph_recursive_inlining_p,
+ update_callee_keys, lookup_recursive_calls,
+ cgraph_decide_recursive_inlining, cgraph_set_inline_failed,
+ cgraph_decide_inlining_of_small_functions, cgraph_decide_inlining,
+ cgraph_decide_inlining_incrementally, cgraph_gate_inlining,
+ pass_ipa_inline): Move to ipa-inline.c
+ (cgraph_postorder, cgraph_remove_unreachable_nodes): Move to ipa.c
+ * ipa.c: New file.
+ * ipa-inline.c: New file.
+
+2005-04-22 Eric Botcazou <ebotcazou@libertysurf.fr>
+
+ * doc/invoke.texi (SPARC options): Document that -mapp-regs
+ is turned off by default on Solaris.
+
+2005-04-21 Roger Sayle <roger@eyesopen.com>
+
+ * c-common.h (objc_build_method_signature): Update prototype.
+ * stub-objc.c (objc_build_method_signature): Update the stub
+ implementation to accept and ignore additional parameter.
+ * c-parser.c (c_parser_objc_method_decl): Reorgnize to pass
+ the value of ellipsis to objc_build_method_signature instead
+ of setting TREE_OVERFLOW on the parms TREE_LIST node.
+
+2005-04-21 Geoffrey Keating <geoffk@apple.com>
+
+ * config/rs6000/rs6000-protos.h (rs6000_emit_sync): New.
+ * config/rs6000/rs6000.c (rs6000_emit_vector_compare): Use
+ gen_rtx_* not gen_rtx_fmt_*.
+ (rs6000_emit_vector_select): Likewise.
+ (rs6000_emit_sync): New.
+ * config/rs6000/rs6000.md (GPR, INT, INT1): New mode macros.
+ (larx, stcx, cmp): New mode substitutions.
+ (UNSPEC_SYNC, UNSPEC_SYNC_OP, UNSPEC_SYNC_SWAP, UNSPEC_LWSYNC,
+ UNSPEC_ISYNC): New constants.
+ (rlwinm): Give name.
+ (memory_barrier, isync, lwsync): New insns.
+ (sync_compare_and_swap<mode>, sync_lock_test_and_set<mode>): New insn.
+ (sync_lock_release<mode>): New expander.
+ (sync_add<mode>, sync_sub<mode>, sync_ior<mode>, sync_and<mode>,
+ sync_xor<mode>, sync_nand<mode>, sync_old_add<mode>,
+ sync_old_sub<mode>, sync_old_ior<mode>, sync_old_and<mode>,
+ sync_old_xor<mode>, sync_old_nand<mode>, sync_new_add<mode>,
+ sync_new_sub<mode>, sync_new_ior<mode>, sync_new_and<mode>,
+ sync_new_xor<mode>, sync_new_nand<mode>): New expanders.
+ (sync_add<mode>_internal, sync_addshort_internal,
+ sync_sub<mode>_internal, sync_andsi_internal, sync_anddi_internal,
+ sync_boolsi_internal, sync_booldi_internal, sync_boolc<mode>_internal,
+ sync_boolc<mode>_internal2, sync_boolcc<mode>_internal): New insns.
+
+ * doc/md.texi (Standard Names): sync_compare_and_swap's operand 0
+ is the memory before, not after, the operation. Clarify
+ barrier requirements.
+
+2005-04-21 Nathan Sidwell <nathan@codesourcery.com>
+
+ * cfghooks.h (struct cfg_hooks): Reword comments to avoid 'abort'.
+ * lambda.h (lambda_vector_min_nz): Likewise.
+ * langhooks.h (struct lang_hooks_for_types,
+ struct lang_hooks): Likewise.
+ * output.h (assemble_integer, this_is_asm_operands): Likewise.
+ * tree.h: Likewise.
+ * vec.h: Likewise.
+ * tree-flow-inline.h (relink_imm_use): Use gcc_assert.
+
+ * optabs.c (prepare_cmp_insn, emit_cmp_and_jump_insns): Reword
+ comments to avoid 'abort'. Use gcc_assert as necessary.
+ * opts.c (common_handle_option): Likewise.
+ * pretty-print.c (pp_base_format_text): Likewise.
+ * print-rtl.c (print_rtx): Likewise.
+ * read-rtl.c (read_rtx_filename, read_rtx_1): Likewise.
+ * regmove.c (try_auto_increment): Likewise.
+ * reload.c (find_valid_class, find_reloads_toplev,
+ find_equiv_reg): Likewise.
+ * reload1.c (reload, forget_old_reloads_1, function_invariant_p,
+ merge_assigned_reloads): Likewise.
+ * tree-inline.c (inline_forbidden_p_1,
+ estimate_num_insns_1): Likewise.
+ * tree-optimize.c (execute_todo): Likewise.
+ * tree-outof-ssa.c (eliminate_phi): Likewise.
+ * tree-ssa-alias.c (add_pointed_to_expr): Likewise.
+ * tree-ssa-ccp.c (maybe_fold_stmt_indirect): Likewise.
+ * tree-ssa-operands.c (parse_ssa_operands,
+ get_indirect_ref_operands, create_ssa_artficial_load_stmt): Likewise.
+ * tree-ssa-pre.c (find_or_generate_expression): Likewise.
+ * tree-ssanames.c (release_ssa_name): Likewise.
+ * tree.c (int_bit_position, int_byte_position, tree_low_cst,
+ walk_tree): Likewise.
+
+ * tree-ssa-operands.c (verify_abort): Fold into ..
+ (verify_imm_links): ... here.
+
+2005-04-21 Richard Henderson <rth@redhat.com>
+
+ * config/alpha/sync.md (sync_new_nand<I48MODE>): Fix constraints
+ on non-memory operand for previous inversion.
+
+2005-04-21 Devang Patel <dpatel@apple.com>
+
+ PR optimization/20994
+ * tree-if-conv.c (find_phi_replacement_condition): Avoid generating
+ x = !(a == b) : p , q;.
+ (pass_if_conversion): Verify stmts and flow.
+
+2005-04-21 Nathan Sidwell <nathan@codesourcery.com>
+
+ * optabs.c (gen_conditional_trap): Restore #define.
+
+ * alias.c (true_dependence): Remove 'abort' from comments. Use
+ gcc_assert and gcc_unreachable as appropriate.
+ (canon_true_dependence): Likewise.
+ * bb-reorder.c (connect_traces): Likewise.
+ * c-common.c (c_add_case_label): Likewise.
+ * c-decl.c (finish_function): Likewise.
+ * caller-save.c (insert_restore, insert_save): Likewise.
+ * cfg.c (update_bb_profile_for_threading): Likewise.
+ * cfganal.c (flow_active_insn_p): Likewise.
+ * cfgexpand.c (add_reg_br_prob_note): Likewise.
+ * cfgrtl.c (rtl_redirect_edge_and_branch_force, rtl_split_edge,
+ cfg_layout_merge_blocks): Likewise.
+ * ifcvt.c (cond_exec_process_insns, merge_if_block,
+ find_if_block): Likewise.
+ * integrate.c (allocate_initial_values): Likewise.
+ * jump.c (reverse_condition, reverse_condition_maybe_unordered,
+ swap_condition, unsigned_condition, signed_condition,
+ mark_jump_label, invert_jump_1, rtx_renumbered_equal_p,
+ reg_or_subregno): Likewise.
+ * lambda-code.c (lambda_compute_auxillary_space,
+ lambda_transform_legal_p): Likewise.
+ * lambda-mat.c (lambda_matrix_inverse_hard): Likewise.
+ * langhooks.c (lhd_set_decl_assembler_name, lhd_type_promotes_to,
+ lhd_incomplete_type_error, lhd_expand_expr,
+ lhd_types_compatible_p, lhd_tree_size): Likewise.
+ * lcm.c (create_pre_exit, optimize_mode_switching): Likewise.
+ * local-alloc.c (update_equiv_regs): Likewise.
+ * loop-unroll.c (peel_loop_completely
+ unroll_loop_constant_iterations, unroll_loop_runtime_iterations,
+ peel_loop_simple, unroll_loop_stupid,
+ analyze_iv_to_split_insn): Likewise.
+ * loop.c (gen_prefetch, find_and_verify_loops,
+ basic_induction_var): Likewise.
+ * modulo-sched.c (normalize_sched_times, check_nodes_order): Likewise.
+ * value-prof.c (tree_find_values_to_profile): Likewise.
+ * varasm.c (named_section, default_assemble_integer,
+ decode_addr_const): Likewise.
+
+2005-04-21 Alan Modra <amodra@bigpond.net.au>
+ Fariborz Jahanian <fjahanian@apple.com>
+
+ * config/rs6000/rs6000.c (rs6000_arg_partial_bytes): Fix size of
+ portion of argument passed in fpr.
+ * expr.c (emit_push_insn): Fix computation of 'offset' used to
+ decide on partial argument save on stack.
+
+2005-04-21 Kazu Hirata <kazu@cs.umass.edu>
+
+ * config/sparc/predicates.md, config/sparc/sparc.md: Fix
+ comment typos.
+
+2005-04-21 Jan Hubicka <jh@suse.cz>
+
+ * cgraphunit.c: Include tree-pass.h
+ (cgraph_decide_recursive_inlining,
+ cgraph_decide_inlining_of_small_function, cgraph_set_inline_failed,
+ cgraph_decide_inlining): Dump goes to dump_file.
+ (cgraph_optimize): Call ipa passes instead of inliner.
+ (cgraph_gate_inlining, pass_ipa_inline): New.
+ * tree-optimize.c (all_ipa_passes): New static variable.
+ (register_one_dump_file): Dead with IPA passes.
+ (register_dump_files): Likewise.
+ (init_tree_optimization_passes): Initialize IPA passes.
+ (execute_todo): Do cgraph dump when asked to, do not dump function body
+ for IPA pass.
+ * tree-pass.h (TODO_dump_cgraph): New macro.
+ (ipa_passes): Declare.
+ * Makefile.in (cgraphunit.o): Add dependency on cgraphunit.h
+
+2005-04-21 Nathan Sidwell <nathan@codesourcery.com>
+
+ * config/i386/i386.c (type_natural_mode): Use gcc_unreachable and
+ gcc_assert instead of abort.
+ (classify_argument, examine_argument, construct_container,
+ contains_128bit_aligned_vector_p, ix86_check_movabs,
+ standard_80387_constant_opcode, standard_80387_constant_rtx,
+ ix86_initial_elimination_offset, ix86_compute_frame_layout,
+ pro_epilogue_adjust_stack, ix86_expand_epilogue,
+ ix86_address_cost, legitimate_address_p, legitimize_pic_address,
+ legitimize_tls_address, output_pic_addr_const,
+ i386_output_dwarf_dtprel, put_condition_code, print_reg,
+ get_some_local_dynamic_name, print_operand, print_operand_address,
+ output_387_binary_op, emit_i387_cw_initialization,
+ output_fix_trunc, output_fp_compare, ix86_output_addr_vec_elt,
+ ix86_expand_clear, ix86_expand_binary_operator,
+ ix86_expand_unary_operator, ix86_match_ccmode, ix86_cc_mode,
+ ix86_cc_modes_compatible, ix86_fp_comparison_codes,
+ ix86_fp_comparison_arithmetics_cost, ix86_expand_fp_compare,
+ ix86_expand_branch, ix86_expand_setcc,
+ ix86_expand_carry_flag_compare, ix86_expand_fp_movcc,
+ ix86_expand_int_addcc, ix86_split_to_parts, ix86_split_long_move,
+ ix86_expand_movmem, ix86_expand_call, assign_386_stack_local,
+ memory_address_length, ix86_attr_length_immediate_default,
+ ix86_attr_length_address_default, ix86_agi_dependant,
+ x86_initialize_trampoline, ix86_init_mmx_sse_builtins,
+ ix86_expand_binop_builtin, ix86_force_to_memory,
+ ix86_secondary_memory_needed, ix86_avoid_jump_misspredicts,
+ x86_emit_floatuns): Likewise.
+ * config/i386/netware.c (gen_regparm_prefix,
+ i386_nlm_strip_name_encoding): Likewise.
+ * config/i386/winnt.c (i386_pe_mark_dllexport): Likewise.
+
+2005-04-21 Nathan Sidwell <nathan@codesourcery.com>
+
+ * optabs.c (gen_condiational_trap): Remove #define.
+ (add_equal_note): Assertify. Remove explicit indirection from
+ call via function pointer.
+ (expand_ternary_op, expand_simple_binop, expand_binop,
+ expand_twoval_unop, expand_twoval_binop,
+ expand_twoval_binop_libfunc, expand_simple_unop expand_unop,
+ emit_unop_insn, emit_no_conflict_block, prepare_cmp_insn,
+ prepare_operand emit_cmp_and_jump_insn_1, emit_cmp_and_jump_insns,
+ prepare_float_lib_cmp, emit_conditional_move,
+ emit_conditional_add, gen_add2_insn, gen_add3_insn,
+ have_add2_insn, gen_sub2_insn, gen_sub3_insn, have_sub2_insn,
+ expand_float, expand_fix, debug_optab_libfuncs, gen_cond_trap,
+ vector_compare_rtx, expand_vec_cond_expr): Likewise.
+
+2005-04-21 Nathan Sidwell <nathan@codesourcery.com>
+
+ * vec.h: Update API to separate allocation mechanism from type.
+ (VEC_safe_grow): New.
+ * vec.c (calculate_allocation): New.
+ (vec_gc_o_reserve, vec_heap_o_reserve): Adjust.
+ (vec_gc_free, vec_heap_free): Remove.
+ * gengtype-lex.l (DEF_VEC_): Process mult-argument macros. Adjust.
+ (VEC): Likewise.
+ (mangle_macro_name): New.
+ (struct macro_def): New.
+ (struct macro): Add multiple argument values.
+ (macro_expans_end): New.
+ (push_macro_expansion): Chain on new macro. Process multiple
+ args, create follow on expansion. Return follow on argument.
+ (macro_input): Deal with multiple arguments.
+
+ * tree.h: Define VEC(tree,heap) and VEC(tree,gc).
+ (struct tree_binfo): Adjust.
+ * basic-block.h: Define VEC(edge,gc).
+ (struct edge_def): Adjust.
+ (struct basic_block_def, struct edge_iterator): Likewise.
+ (ei_container, ei_start_1, ei_last_1): Likewise.
+ * cfg.c (connect_src, connect_dest): Likewise.
+ * cfgrtl.c (force_nonfallthru_and_redirect)
+ * dbxout.c (dbxout_type)
+ * dwarf2out.c (gen_member_die)
+ * lambda-code.c: Define VEC(int,gc), VEC(lambda_loop,gc).
+ (gcc_tree_to_linear_expression): Adjust.
+ (gcc_loop_to_lambda_loop, gcc_loopnest_to_lambda_loopnest,
+ lbv_to_gcc_expression, lle_to_gcc_expression,
+ lambda_loopnest_to_gcc_loopnest, can_convert_to_perfect_nest,
+ perfect_nestify): Likewise.
+ * lambda.h (gcc_loopnest_to_lambda_loopnest,
+ lambda_loopnest_to_gcc_loopnest): Adjust prototypes.
+ * profile.c (instrument_values): Adjust.
+ * tree-cfg.c (modified_noreturn_calls): Adjust.
+ (remove_fallthru_edge): Likewise.
+ * tree-dump.c (dequeue_and_dump): Adjust.
+ * tree-flow-inline.h (mark_stmt_modified): Adjust.
+ * tree-flow.h (modified_noreturn_calls): Adjust.
+ (tree_on_heap): Remove. (yay!)
+ (register_new_def): Adjust.
+ * tree-into-ssa.c: Define VEC(int,heap).
+ (block_defs_stack): Adjust.
+ (find_idf, insert_phi_nodes, register_new_def,
+ rewrite_initialize_block, rewrite_finalize_block,
+ register_new_update_single, rewrite_update_init_block,
+ rewrite_update_fini_block, rewrite_blocks,
+ ssa_rewrite_finalize_block, ssa_register_new_def,
+ ssa_rewrite_initialize_block, rewrite_ssa_into_ssa): Likewise.
+ * tree-loop-linear.c (linear_transform_loops): Adjust.
+ * tree-ssa-alias.c: Define VEC(fieldoff_t,heap).
+ (push_fields_onto_fieldstack, create_overlap_variables_for): Adjust.
+ * tree-ssa-dom.c (avail_exprs_stack, block_defs_stack,
+ stmts_to_rescan, const_and_copies_stack, nonzero_vars_stack,
+ vrp_variables_stack): Adjust declarations.
+ (tree_ssa_dominator_optimize): Adjust.
+ (dom_opt_initialize_block, remove_local_expressions_from_table,
+ restore_nonzero_vars_to_original_value,
+ restore_vars_to_original_value,
+ restore_currdefs_to_original_value, dom_opt_finalize_block,
+ record_var_is_nonzero, record_cond, record_const_or_copy_1,
+ optimize_stmt, update_rhs_and_lookup_avail_expr,
+ lookup_avail_expr, record_range): Likewise.
+ * tree-ssa-pre.c: Define VEC(basic_block,heap).
+ (compute_antic_aux): Adjust.
+ (inserted_exprs, create_expression_by_pieces,
+ insert_into_preds_of_block, eliminate, mark_operand_necessary,
+ remove_dead_inserted_code, fini_pre): Likewise.
+ * tree-ssa-propagate.c (interesting_ssa_edges): Adjust.
+ (varying_ssa_edges, add_ssa_edge, process_ssa_edge_worklist.
+ ssa_prop_init): Likewise.
+ * tree-ssa.c: Define VEC(bitmap,heap).
+ (verify_name_tags): Adjust.
+ * value-prof.c (rtl_divmod_values_to_profile): Adjust.
+ (insn_prefetch_values_to_profile, rtl_find_values_to_profile,
+ tree_divmod_values_to_profile, tree_find_values_to_profile,
+ value_profile_transformations): Likewise.
+ * value-prof.h: Define VEC(histogram_value,heap).
+ * varasm.c: Remove alias_pair pointer typedef, define
+ VEC(alias_pair,gc).
+ (finish_aliases_1, finish_aliases_2, assemble_alias): Adjust.
+
+ * config/pa/pa.c (typedef extern_symbol): Typedef the structure,
+ not a pointer to it. Create an object vector.
+ (extern_symbols): Turn into an object vector.
+ (pa_hpux_asm_output_external, pa_hpux_file_end): Adjust.
+
+2005-04-21 Sebastian Pop <pop@cri.ensmp.fr>
+
+ PR/20742
+ * Makefile.in (tree-chrec.o): Depend on params.h.
+ * params.def (PARAM_SCEV_MAX_EXPR_SIZE): New parameter with
+ default value 20.
+ * tree-chrec.c: Depend on params.h. Replace build with buildN,
+ and fold build with fold_buildN.
+ (chrec_fold_plus_1): Fail with a chrec_don_know when the size of
+ the expression exceeds PARAM_SCEV_MAX_EXPR_SIZE.
+ (tree_contains_chrecs): Compute an estimation of the size of the
+ given expression.
+ * tree-chrec.h (tree_contains_chrecs): Modify its declaration.
+ (tree_does_not_contain_chrecs): Update the use of tree_contains_chrecs.
+ * tree-scalar-evolution.c (simple_iv): Ditto.
+ * doc/invoke.texi (scev-max-expr-size): Documented.
+
+2005-04-21 Richard Sandiford <rsandifo@redhat.com>
+
+ * config.gcc (*-*-darwin*): Add darwin.opt to $extra_options.
+ (i[34567]86-pc-msdosdjgpp*): Likewise i386/djgpp.opt.
+ (i[34567]86-*-lynxos*, powerpc-*-lynxos*): Likewise lynx.opt.
+ (i[34567]86-*-sco3.2v5*): Likewise i386/sco5.opt.
+ (i[34567]86-*-pe, i[34567]86-*-cygwin*, i[34567]86-*-mingw32*)
+ (i[34567]86-*-uwin*): Likewise i386/cygming.opt.
+ * config/darwin.h (darwin_one_byte_bool, darwin_fix_and_continue)
+ (darwin_fix_and_continue_switch, SUBTARGET_OPTIONS): Delete.
+ * config/darwin.c (darwin_one_byte_bool, darwin_fix_and_continue)
+ (darwin_fix_and_continue_switch): Delete.
+ * config/lynx.h (SUBTARGET_OS_LYNX_SWITCHES): Delete.
+ (SUBTARGET_SWITCHES): Delete.
+ * config/i386/i386.h (target_flags, MASK_80387, MASK_RTD)
+ (MASK_ALIGN_DOUBLE, MASK_SVR3_SHLIB, MASK_IEEE_FP, MASK_FLOAT_RETURNS)
+ (MASK_NO_FANCY_MATH_387, MASK_OMIT_LEAF_FRAME_POINTER)
+ (MASK_STACK_PROBE, MASK_NO_ALIGN_STROPS, MASK_INLINE_ALL_STROPS)
+ (MASK_NO_PUSH_ARGS, MASK_ACCUMULATE_OUTGOING_ARGS, MASK_MMX)
+ (MASK_SSE, MASK_SSE2, MASK_SSE3, MASK_3DNOW, MASK_3DNOW_A)
+ (MASK_128BIT_LONG_DOUBLE, MASK_64BIT, MASK_MS_BITFIELD_LAYOUT)
+ (MASK_TLS_DIRECT_SEG_REFS, MASK_NO_RED_ZONE, TARGET_80387)
+ (TARGET_RTD, TARGET_ALIGN_DOUBLE, TARGET_PUSH_ARGS)
+ (TARGET_ACCUMULATE_OUTGOING_ARGS, TARGET_SVR3_SHLIB, TARGET_IEEE_FP)
+ (TARGET_128BIT_LONG_DOUBLE, TARGET_NO_FANCY_MATH_387)
+ (TARGET_USE_FANCY_MATH_387, TARGET_OMIT_LEAF_FRAME_POINTER)
+ (TARGET_DEBUG_ADDR, TARGET_DEBUG_ARG): Delete.
+ (TARGET_FLOAT_RETURNS_IN_80387): Make an alias of TARGET_FLOAT_RETURNS.
+ (TARGET_64BIT): Undef before redefining.
+ (TARGET_TLS_DIRECT_SEG_REFS, TARGET_STACK_PROBE)
+ (TARGET_ALIGN_STRINGOPS, TARGET_INLINE_ALL_STRINGOPS, TARGET_SSE)
+ (TARGET_SSE2, TARGET_SSE3, TARGET_MMX, TARGET_3DNOW, TARGET_3DNOW_A)
+ (TARGET_RED_ZONE, TARGET_USE_MS_BITFIELD_LAYOUT, TARGET_SWITCHES)
+ (TARGET_OPTIONS, SUBTARGET_SWITCHES, SUBTARGET_OPTIONS)
+ (ix86_fpmath_string, ix86_tls_dialect_string, ix86_cmodel_string)
+ (ix86_asm_string, ix86_regparm, ix86_regparm_string)
+ (ix86_preferred_stack_boundary_string, ix86_branch_cost_string)
+ (ix86_debug_arg_string, ix86_debug_addr_string)
+ (ix86_align_loops_string, ix86_align_jumps_string)
+ (ix86_align_funcs_string): Delete.
+ * config/i386/cygming.h (MASK_NOP_FUN_DLLIMPORT)
+ (TARGET_NOP_FUN_DLLIMPORT, SUBTARGET_SWITCHES): Delete.
+ * config/i386/djgpp.h (MASK_BNU210, SUBTARGET_SWITCHES): Delete.
+ (SUBTARGET_OVERRIDE_OPTIONS): Check TARGET_BNU210.
+ * config/i386/lynx.h (SUBTARGET_SWITCHES): Delete.
+ * config/i386/sco5.h (MASK_COFF, TARGET_ELF)
+ (SUBTARGET_SWITCHES): Delete.
+ * config/i386/i386.c (ix86_debug_arg_string): Delete.
+ (ix86_debug_addr_string): Delete.
+ (ix86_cmodel_string, ix86_asm_string, ix86_tls_dialect_string)
+ (ix86_fpmath_string, ix86_regparm_string, ix86_regparm)
+ (ix86_align_loops_string, ix86_align_jumps_string)
+ (ix86_preferred_stack_boundary_string, ix86_branch_cost_string)
+ (ix86_align_funcs_string): Make static.
+ (TARGET_DEFAULT_TARGET_FLAGS, TARGET_HANDLE_OPTION): Override defaults.
+ (ix86_handle_option): New function.
+ (TARGET_USE_MS_BITFIELD_LAYOUT): Delete.
+ (ix86_ms_bitfield_layout_p): Check TARGET_MS_BITFIELD_LAYOUT.
+ * config/rs6000/darwin.h (SUBTARGET_OVERRIDE_OPTIONS): Remove handling
+ of darwin_fix_and_continue_switch.
+ (darwin_one_byte_bool): Delete.
+ * config/rs6000/lynx.h (EXTRA_SUBTARGET_SWITCHES): Delete.
+ * config/rs6000/rs6000.c (rs6000_override_options): Update assignment
+ to darwin_one_byte_bool.
+ * config/darwin.opt, config/lynx.opt, config/i386/cygming.opt,
+ * config/i386/djgpp.opt, config/i386/i386.opt,
+ * config/i386/sco5.opt: New files.
+
+2005-04-21 Eric Botcazou <ebotcazou@libertysurf.fr>
+
+ * config/sparc/sparc.c (reg_or_0_operand, const1_operand,
+ fp_zero_operand, fp_register_operand, intreg_operand,
+ fcc_reg_operand, fcc0_reg_operand, icc_or_fcc_reg_operand,
+ call_operand, call_operand_address, tgd_symbolic_operand,
+ tld_symbolic_operand, tie_symbolic_operand, tle_symbolic_operand,
+ symbolic_operand, symbolic_memory_operand, label_ref_operand,
+ sp64_medium_pic_operand, data_segment_operand,
+ text_segment_operand, splittable_symbolic_memory_operand,
+ reg_or_nonsymb_mem_operand, splittable_immediate_memory_operand,
+ eq_or_neq, normal_comp_operator, noov_compare_op,
+ noov_compare64_op, v9_regcmp_op, extend_op, cc_arithop,
+ cc_arithopn, arith_operand, arith_4096_operand, arith_add_operand,
+ const64_operand, const64_high_operand, arith11_operand,
+ arith10_operand, arith_double_operand, arith_double_4096_operand,
+ arith_double_add_operand, arith11_double_operand,
+ arith10_double_operand, small_int, small_int_or_double,
+ uns_small_int, uns_arith_operand, clobbered_register,
+ input_operand, compare_operand): Delete.
+ (sparc_emit_set_const32): Use predicates in assertion. Remove special
+ code for TARGET_ARCH64 && HOST_BITS_PER_WIDE_INT != 64.
+ (sparc_emit_set_const64): Call gcc_unreachable if H_B_P_W_I == 32.
+ (GEN_HIGHINT64, GEN_INT64): Delete.
+ (sparc_emit_set_safe_HIGH64, gen_safe_SET64, gen_safe_OR64,
+ gen_safe_XOR64): Adjust for above deletion.
+ (sparc_emit_set_const64): Support only H_B_P_W_I == 64 and CONST_INTs.
+ Use 'unsigned HOST_WIDE_INT' instead of 'long' for bitmask.
+ (legitimate_constant_p): Use const_zero_operand instead.
+ (sparc_extra_constraint_check): Likewise.
+ * config/sparc/sparc.h (CONST_DOUBLE_OK_FOR_LETTER_P): Remove 'O'.
+ (PREFERRED_RELOAD_CLASS): Use const_zero_operand.
+ (PREDICATE_CODES): Delete.
+ * config/sparc/sparc.md: Include predicates.md.
+ (All patterns): Adjust for new predicate names.
+ (cmpdi, cmpdi_sp64): Use arith_operand predicate.
+ (movhi_const64_special, movsi_const64_special): Add 'K' constraint.
+ (movdi): Use general_operand predicate.
+ (movdi_sp64_dbl): Delete.
+ (movdi_const64_special): Add 'N' constraint.
+ (movdicc): Use arith10_operand predicate.
+ (movdi_cc_sp64, movdi_cc_sp64_trunc): Use arith11_operand predicate.
+ (movdi_cc_reg_sp64): Use arith10_operand predicate.
+ (movdi_cc_reg_sp64_trunc): Delete.
+ (cmp_zero_extract, cmp_zero_extract_sp64): Use small_int_operand.
+ (adddi3_sp64, cmp_ccx_plus, cmp_ccx_plus_set): Use arith_operand.
+ (subdi3_sp32): Delete.
+ (subdi3_insn_sp32): Change to define_insn_and_split.
+ (subdi3_sp64, cmp_minus_ccx, cmp_minus_ccx_set): Use arith_operand.
+ (muldi3, muldi3_sp64, muldi3_v8plus): Likewise.
+ (smulsi3_highpart_v8plus, const_smulsi3_highpart_v8plus,
+ umulsi3_highpart_v8plus, const_umulsi3_highpart_v8plus): Use
+ small_int_operand predicate.
+ (divdi3, udivdi3): Use arith_operand predicate.
+ (udivsi3, udivsi3_sp32, udivsi3_sp64): Use nonimmediate_operand.
+ (and<V64I>3_sp64, ior<V64I>3_sp64, xor<V64I:mode>3_sp64,
+ xor_not_<V64I:mode>_sp64) : Use arith_operand predicate.
+ (xordi3_sp64_dbl): Delete.
+ (cmp_ccx_arith_op, cmp_ccx_arith_op_set, cmp_ccx_xor_not,
+ cmp_ccx_xor_not_set, cmp_ccx_arith_op_not, cmp_ccx_arith_op_not_set,
+ cmp_ccx_neg, cmp_ccx_set_neg, one_cmpl<V64I>2_sp64, cmp_ccx_not,
+ cmp_ccx_set_not): Use arith_operand predicate.
+ (ashrsi3_extend2, lshrsi3_extend2 et al.): Use small_int_operand.
+ * config/sparc/predicates.md: New file.
+
+2005-04-21 Kazu Hirata <kazu@cs.umass.edu>
+
+ PR tree-optimization/14846
+ * fold-const.c (fold_single_bit_test_into_sign_test): New,
+ split out from ...
+ (fold_single_bit_test): ... here.
+ (fold_binary): Call fold_single_bit_test_into_sign_test
+ instead of fold_single_bit_test.
+
+2005-04-20 James E Wilson <wilson@specifixinc.com>
+
+ PR c++/20805
+ * dwarf2out.c (gen_variable_die): Don't emit a specification if this
+ is another declaration.
+
+2005-04-21 Hans-Peter Nilsson <hp@axis.com>
+
+ * config/cris/predicates.md: New file.
+ * config/cris/cris-protos.h (cris_store_multiple_op_p)
+ (cris_movem_load_rest_p): Declare.
+ * config/cris/cris.c (cris_store_multiple_op): Return bool, not int.
+ (cris_movem_load_rest_p): Ditto. Globalize.
+ (cris_bdap_operand, cris_bdap_biap_operand,
+ cris_orthogonal_operator, cris_commutative_orth_op,
+ cris_operand_extend_operator,
+ cris_additive_operand_extend_operator, cris_extend_operator,
+ cris_plus_or_bound_operator, cris_mem_op,
+ cris_general_operand_or_symbol,
+ cris_general_operand_or_gotless_symbol,
+ cris_general_operand_or_plt_symbol, cris_mem_call_operand,
+ cris_load_multiple_op): Remove predicate functions.
+ (cris_symbol, cris_gotless_symbol) <case UNSPEC>: Return 0, don't
+ abort, for UNSPECs other than CRIS_UNSPEC_PLT.
+ * config/cris/cris.h (PREDICATE_CODES): Don't define.
+ * config/cris/cris.md: Include predicates.md.
+ ("call", "call_value"): Generate CONSTs of Pmode, not VOIDmode.
+
+2005-04-20 Ian Lance Taylor <ian@airs.com>
+
+ * c-common.def: Remove STMT_EXPR (moved to cp/cp-tree.def).
+ * c-common.h (STMT_EXPR_STMT): Don't define.
+ (STMT_EXPR_NO_SCOPE): Don't define.
+ * c-dump.c (c_dump_tree): Don't handle STMT_EXPR.
+ * c-pretty-print.c (pp_c_primary_expression): Likewise.
+ (pp_c_expression): Likewise.
+
+2005-04-20 Richard Henderson <rth@redhat.com>
+
+ PR target/21100
+ * config/i386/mmx.md (push<MMXMODE>1): Fix predicate thinko.
+
+2005-04-20 Jeff Law <law@redhat.com>
+
+ * reload1.c (reload): Ignore equivalences between pseudos and
+ read only memory.
+
+2005-04-20 Joseph S. Myers <joseph@codesourcery.com>
+
+ PR c/12913
+ * c-tree.h (struct c_label_list): Update comment.
+ (struct c_label_context): Rename to struct c_label_context_se.
+ (label_context_stack): Rename to label_context_stack_se.
+ (C_DECL_UNJUMPABLE_VM, C_DECL_UNDEFINABLE_VM, struct
+ c_label_context_vm, label_context_stack_vm, c_begin_vm_scope,
+ c_end_vm_scope): New.
+ (C_DECL_DECLARED_BUILTIN, C_DECL_USED): Use FUNCTION_DECL_CHECK.
+ * c-decl.c (pop_scope): Call c_end_vm_scope.
+ (pushdecl): Call c_begin_vm_scope for variably modified
+ declarations.
+ (define_label): Check for jumping into scope of identifier with
+ variably modified type. Push label on stack for those defined at
+ current context of identifiers with variably modified type.
+ (start_function): Create stack level for context of identifiers
+ with variably modified type.
+ (finish_function): Pop stack level for context of identifiers with
+ variably modified type.
+ * c-typeck.c (label_context_stack): Rename to
+ label_context_stack_se.
+ (label_context_stack_vm, c_begin_vm_scope, c_end_vm_scope): New.
+ (c_finish_goto_label): Check for jumping into scope of identifier
+ with variably modified type. Push label on stack for those jumped
+ to from current context of identifiers with variably modified
+ type.
+ (struct c_switch): Add blocked_vm.
+ (c_start_case): Initialize blocked_vm.
+ (do_case): Check blocked_vm.
+ (c_finish_case): Add comment.
+ (c_begin_stmt_expr, c_finish_stmt_expr): Update for renamed
+ variable label_context_stack.
+
+2005-04-20 Kazu Hirata <kazu@cs.umass.edu>
+
+ * tree-ssa-phiopt.c (tree_ssa_phi_opt): Update calls to
+ conditional_replacement, value_replacement, abs_replacement,
+ minmax_replacement.
+ (replace_phi_edge_with_variable): Remove argument BB.
+ (conditional_replacement, value_replacement,
+ minmax_replacement, abs_replacement): Remove argument PHI_BB.
+ Update a call to replace_phi_edge_with_variable.
+
+ * tree-ssa-phiopt.c: Fix comments.
+
+2005-04-20 Michael Matz <matz@suse.de>
+
+ PR20973
+ * reload.c (push_reload, find_dummy_reload): Check for uninitialized
+ pseudos.
+
+2005-04-20 Kazu Hirata <kazu@cs.umass.edu>
+
+ * tree-ssa-phiopt.c: Fix comment typos.
+
+ PR tree-optimization/21116
+ * tree-ssa-phiopt.c: Fix a typo.
+
+2005-04-19 Richard Henderson <rth@redhat.com>
+
+ * builtins.c (expand_builtin_sync_operation): Revert last change.
+ * optabs.c (expand_bool_compare_and_swap): Compare vs old value,
+ not vs new value.
+ (expand_compare_and_swap_loop): Likewise.
+ (expand_sync_operation): Remove fallback from NAND to AND; invert
+ memory operand when expanding from cmpxchg.
+ (expand_sync_fetch_operation): Likewise.
+ * doc/extend.texi (Atomic Builtins): Fix docs for nand and
+ compare-and-swap.
+
+ * config/alpha/alpha.c (alpha_split_atomic_op): Invert memory operand
+ when implementing NAND. Fix double-add for AFTER.
+ * config/alpha/sync.md (sync_nand<I48MODE>): Invert memory operand.
+ (sync_old_nand<I48MODE>, sync_new_nand<I48MODE>): Likewise.
+ (sync_compare_and_swap<I48MODE>): Fix compare vs zero. Return old
+ memory value.
+ (sync_lock_test_and_set<I48MODE>): Remove extra label and last
+ memory barrier.
+
+ * config/i386/sync.md (sync_compare_and_swap<IMODE>): Fix pattern
+ to return old memory value.
+ (sync_compare_and_swap_cc<IMODE>): Likewise.
+
+ * config/ia64/ia64.c (ia64_dependencies_evaluation_hook): Early
+ return pre-reload. Don't consider output or anti dependencies.
+ * config/ia64/sync.md (IMODE): New.
+ (modesuffix): Add QI and HI.
+ (memory_barrier): Simplify expansion.
+ (sync_compare_and_swap<IMODE>): Use IMODE, not I48MODE.
+ (cmpxchg_acq_<IMODE>): Likewise.
+ (sync_lock_test_and_set<IMODE>): Likewise.
+ (sync_lock_release<IMODE>): Likewise.
+
+2005-04-19 James A. Morrison <phython@gcc.gnu.org>
+
+ * fold-const.c (fold_binary): Fold ~(X ^ Y) to ~X ^ Y or X ^ ~Y if
+ ~X or ~Y simplify.
+
+2005-04-19 James A. Morrison <phython@gcc.gnu.org>
+
+ * fold-const (fold_binary): Fold ~X ^ ~ Y to X ^ Y.
+
+2005-04-20 Michael Pogue <michael.pogue@sun.com>
+ Joseph S. Myers <joseph@codesourcery.com>
+
+ * c.opt (Wint-to-pointer-cast, Wpointer-to-int-cast): New options.
+ * c-typeck.c (build_c_cast): Check these options.
+ * doc/invoke.texi: Document these options.
+
+2005-04-20 Kazu Hirata <kazu@cs.umass.edu>
+
+ * tree-ssa-phiopt.c: Update a comment about the pass.
+
2005-04-19 Kazu Hirata <kazu@cs.umass.edu>
* tree-ssa-phiopt.c, config/arm/arm.c, config/fr30/fr30.md,