+2006-03-21 Toon Moene <toon@moene.indiv.nluug.nl>
+
+ * doc/invoke.texi: Document new flag -fargument-noalias-anything.
+ * tree-ssa-alias.c (may_alias_p): If flag_argument_noalias > 2,
+ argument pointers may not alias any other storage.
+ * common.opt: Define option -fargument-noalias-anything.
+ * tree-ssa-structalias.c (intra_create_variable_infos): Fortran
+ alias semantics is specified by flag_argument_noalias > 2.
+
+2006-03-20 Jeff Law <law@redhat.com>
+
+ * tree-pass.h (pass_phi_only_copy_prop): Delete.
+ (pass_phi_only_cprop): Declare.
+ * passes.c (init_optimization_passes): Replace pass_phi_only_copy_prop
+ with phi_only_cprop
+ * tree-ssa-dom.c (degenerate_phi_result): New function.
+ (remove_stmt_or_phi, get_lhs_or_phi_result): Likewise.
+ (get_rhs_or_phi_arg, propagate_rhs_into_lhs): Likewise.
+ (eliminate_const_or_copy, eliminate_degenerate_phis_1): Likewise.
+ (eliminate_degenerate_phis): Likewise.
+ (pass_phi_only_cprop): New pass descriptor.
+ * tree-ssa-copy.c (init_copy_prop): Lose PHIS_ONLY argument and
+ support code. Callers updated.
+ (execute_copy_prop, do_copy_prop): Likewise and corresponding changes.
+ (store_copy_prop): Likewise.
+ (do_phi_only_copy_prop, pass_phi_only_copy_prop): Remove.
+
+2006-03-20 Jason Merrill <jason@redhat.com>
+
+ PR c++/21764
+ * c-pragma.c (visstack): Move out of handle_pragma_visibility.
+ (push_visibility, pop_visibility): Likewise.
+ * c-pragma.h: Declare them.
+
+2006-03-20 Kaz Kojima <kkojima@gcc.gnu.org>
+
+ * config/sh/sh.c (untangle_mova): Initialize n_addr and n_target.
+
+ * config/sh/sh.c (find_regmode_weight): Change the type of the first
+ parameter and use get_ebb_head_tail.
+ (sh_md_init_global): Adjust uses of find_regmode_weight.
+
+2006-03-20 Steven Bosscher <stevenb.gcc@gmail.com>
+
+ * function.h (struct function) <x_tail_recursion_reentry>:
+ Rename to x_stack_check_probe_note.
+ (tail_recursion_reentry): Rename to stack_check_probe_note.
+ * function.c: Replace tail_recursion_reentry with
+ stack_check_probe_note everywhere.
+ (expand_function_start): Only emit a note for
+ stack_check_probe_note with -fstack-protect.
+ * stmt.c (expand_case): Don't emit NOTE_INSN_DELETED notes.
+
+ * emit-rtl.c (remove_unnecessary_notes): Remove.
+ (pass_remove_unnecessary_notes): Remove.
+ * rtl.h (remove_unnecessary_notes): Remove prototype.
+ * final.c (final_start_function): Don't call remove_unnecessary_notes.
+ * tree-pass.h (pass_remove_unnecessary_notes): Remove.
+ * passes.c (pass_remove_unnecessary_notes): Don't run it.
+
+2006-03-20 Andrew Pinski <pinskia@physics.uc.edu>
+
+ PR tree-opt/26629
+ * tree-ssa-pre (phi_translate): Handle ARRAY_REF's operands.
+ (valid_in_set): Handle ARRAY_REF.
+ Change "if min_variant or VH" to asserts.
+ (create_component_ref_by_pieces): Handle ARRAY_REF.
+ (create_expression_by_pieces): Likewise.
+ (can_PRE_operation): ARRAY_REFs can now be PRE'd.
+
+2006-03-20 David Edelsohn <edelsohn@gnu.org>
+
+ * genpreds.c (write_insn_extra_address_constraint): Argument `c'
+ is operand of switch, not str[0].
+
+2006-03-20 Alan Modra <amodra@bigpond.net.au>
+
+ * config/rs6000/rs6000.c (rs6000_handle_option): Use
+ TARGET_NO_FP_IN_TOC inside #ifdef TARGET_USES_SYSV4_OPT too.
+
+2006-03-19 David Edelsohn <edelsohn@gnu.org>
+
+ * genpreds.c (write_tm_preds_h): Add semicolon and newline at
+ end of insn_extra_address_constraint declaration.
+
+2006-03-19 David Edelsohn <edelsohn@gnu.org>
+
+ * config/rs6000/rs6000.opt (no-fp-in-toc): Use Var not Mask.
+ (no-sum-in-toc): Same.
+ * config/rs6000/rs6000.c (rs6000_handle_option): Use new
+ variables.
+ * config/rs6000/sysv4.h (SUBTARGET_OVERRIDE_OPTIONS): Set
+ NO_FP_IN_TOC for -fPIC instead of mask.
+
+ * config/rs6000/t-aix43 (T_ADAFLAGS): Delete.
+ (BOOT_LDFLAGS): Delete.
+ (LDFLAGS): Delete.
+ * config/rs6000/t-aix52: Same.
+
+ * config/rs6000/rs6000.md (store_multiple_power): Delete.
+ (stmsi[345678]_power): New.
+
+2006-03-17 Steve Ellcey <sje@cup.hp.com>
+
+ * config/ia64/ia64.opt: Add empty line to end of file.
+
+2006-03-17 Richard Guenther <rguenther@suse.de>
+
+ PR middle-end/26721
+ * builtins.c (get_pointer_alignment): For component style references
+ adjust alignment to the component type alignment. Make sure
+ to adjust alignment for component access of constants.
+
+2006-03-17 David Edelsohn <edelsohn@gnu.org>
+
+ * config/rs6000/rs6000.md (strlensi): Emit barrier after
+ unconditional jump.
+
+2006-03-17 Paul Brook <paul@codesourcery.com>
+
+ * doc/install.texi: Docuemnt --with-mode.
+ * config.gcc: Add --with-mode for arm*-*-*.
+ * config/arm/arm.h (OPTION_DEFAULT_SPECS): Add "mode".
+
+2006-03-17 J"orn Rennecke <joern.rennecke@st.com>
+
+ * sh.c (max_labelno_before_reorg): New variable.
+ (sh_reorg): Initialize it.
+ (find_barrier): Check max_labelno_before_reorg before using
+ label_to_alignment. Take length of explicit alignment insns
+ into account. When seeing a UNSPECV_CONST_END, return it.
+
+ * sh.c (fixup_mova): Set mode of affected label to QImode.
+ (untangle_mova): New function.
+ (find_barrier): Use it. Check mode of label before decrementing
+ num_mova.
+ (sh_reorg): Likewise.
+ Set mode of all insns back to VOIDmode.
+
+ * sh.c (MOVA_LABELREF): New macro.
+ (mova_p, fixup_mova, sh_reorg): Use it.
+ (find_barrier, sh_reorg): Don't count num_mova back to 0 unless
+ ADDR_DIFF_VEC matches mova.
+
+2006-03-17 Steven Bosscher <stevenb.gcc@gmail.com>
+
+ * dwarf2asm.c (dw2_asm_output_offset): Mark 'base' argument
+ with ATTRIBUTE_UNUSED.
+
+2006-03-17 Alexandre Oliva <aoliva@redhat.com>
+
+ * dwarf2out.c (dwarf2out_stack_adjust): Always track the stack
+ pointer, instead of assuming it is possible to derive the
+ correct args size from a call insn.
+
+2006-03-16 Jan-Benedict Glaw <jbglaw@lug-owl.de>
+
+ * rtl.h (CONST_INT_P): Define.
+ * config/vax/vax.c (print_operand_address): Use CONST_INT_P()
+ instead of GET_CODE(x) == CONST_INT.
+ (vax_rtx_costs): Likewise.
+ (vax_output_int_move): Likewise.
+ (vax_output_int_add): Likewise.
+ (legitimate_constant_address_p): Likewise.
+ (index_term_p): Likewise.
+ * config/vax/vax.h (PRINT_OPERAND): Likewise.
+ * config/vax/vax.md (and<mode>3): Likewise.
+ (ashrsi3): Likewise.
+ (extv): Likewise.
+ (movstricthi): Likewise.
+ (movstrictqi): Likewise.
+ (rotrsi3): Likewise.
+ (five unnamed insns): Likewise.
+
+2006-03-16 Geoffrey Keating <geoffk@apple.com>
+
+ * doc/tm.texi (SDB and DWARF): Add extra parameter to
+ ASM_OUTPUT_DWARF_OFFSET. Use @var to indicate metavariables.
+ * dwarf2asm.h (dw2_asm_output_offset): Add section parameter.
+ * dwarf2asm.c (dw2_asm_output_offset): Add base section parameter.
+ Pass to ASM_OUTPUT_DWARF_OFFSET.
+ * dwarf2out.c (debug_frame_section): New.
+ (output_call_frame_info): Use debug_frame_section. Pass it to
+ dw2_asm_output_offset.
+ (output_die): Pass appropriate section to dw2_asm_output_offset.
+ (output_compilation_unit_header): Likewise.
+ (output_pubnames): Likewise.
+ (output_aranges): Likewise.
+ (enum dw_val_class): Break dw_val_class_lbl_offset into
+ dw_val_class_lineptr and dw_val_class_macptr.
+ (add_AT_lbl_offset): Delete.
+ (add_AT_lineptr): New.
+ (add_AT_macptr): New.
+ (AT_lbl): Expect a lineptr or macptr.
+ (print_die): Handle dw_val_class_lineptr and dw_val_class_macptr.
+ (attr_checksum): Likewise.
+ (same_dw_val_p): Likewise.
+ (size_of_die): Likewise.
+ (value_format): Likewise.
+ (output_die): Likewise.
+ (dwarf2out_finish): Call add_AT_lineptr and add_AT_macptr instead of
+ add_AT_lbl_offset.
+ * config/i386/cygming.h (ASM_OUTPUT_DWARF_OFFSET): Add extra parameter.
+ * config/i386/i386.c (x86_file_start): Call darwin_file_start.
+ * config/darwin-protos.h (darwin_file_start): New.
+ (darwin_asm_output_dwarf_offset): New.
+ * config/ia64/ia64.h (ASM_OUTPUT_DWARF_OFFSET): Add extra parameter.
+ * config/rs6000/rs6000.c (rs6000_darwin_file_start): Call
+ darwin_file_start.
+ * config/darwin.c (darwin_emit_unwind_label): Don't output label
+ if not EH section; simplify.
+ (darwin_file_start): New.
+ (darwin_asm_output_dwarf_offset): New.
+ * config/darwin.h (DEBUG_FRAME_SECTION): In __DWARF segment,
+ mark as 'debug'.
+ (DEBUG_INFO_SECTION): Likewise.
+ (DEBUG_ABBREV_SECTION): Likewise.
+ (DEBUG_ARANGES_SECTION): Likewise.
+ (DEBUG_MACINFO_SECTION): Likewise.
+ (DEBUG_LINE_SECTION): Likewise.
+ (DEBUG_LOC_SECTION): Likewise.
+ (DEBUG_PUBNAMES_SECTION): Likewise.
+ (DEBUG_STR_SECTION): Likewise.
+ (DEBUG_RANGES_SECTION): Likewise.
+ (FRAME_BEGIN_LABEL): Must start with 'L' in debug section.
+ (ASM_OUTPUT_DWARF_OFFSET): New.
+
+2006-03-16 Joseph S. Myers <joseph@codesourcery.com>
+
+ * config.gcc (tm_defines): Always add to previous value rather
+ than replacing it.
+
+2006-03-16 Richard Sandiford <richard@codesourcery.com>
+
+ * config/mips/predicates.md (splittable_const_int_operand): New,
+ split from move_operand.
+ (splittable_symbolic_operand): New.
+ (move_operand): Add commentary. Use splittable_const_int_operand.
+ Inline mips_atomic_symbolic_constant_p.
+ * config/mips/mips.md: Add combine splitters for handling moves
+ of splittable_const_int_operands and splittable_symbolic_operands.
+ * config/mips/mips-protos.h (mips_atomic_symbolic_constant_p): Delete.
+ (mips_split_symbol): Declare.
+ (mips_move_integer): Declare.
+ * config/mips/mips.c (mips_split_p): Make global.
+ (TARGET_MIN_ANCHOR_OFFSET): Override default.
+ (TARGET_MAX_ANCHOR_OFFSET): Likewise.
+ (TARGET_USE_BLOCKS_FOR_CONSTANT_P): Likewise.
+ (TARGET_USE_ANCHORS_FOR_SYMBOL_P): Likewise.
+ (mips_offset_within_object_p): Handle block symbols.
+ (mips_atomic_symbolic_constant_p): Delete.
+ (mips_cannot_force_const_mem): Return false for constants that
+ mips_legitimize_move can handle.
+ (mips_use_blocks_for_constant_p): New function.
+ (mips_split_symbol): Make global.
+ (mips_move_integer): Likewise. Add a temporary register argument.
+ (mips_legitimize_const_move): Use splittable_const_int_operand and
+ splittable_symbolic_operand.
+ (mips_use_anchors_for_symbol_p): New function.
+ * config/mips/mips.h: Protect externs with !USED_FOR_TARGET.
+ (mips_split_p): Declare.
+
+2006-03-16 Richard Sandiford <richard@codesourcery.com>
+
+ * config.gcc (mips64*-*-linux*): Keep existing tm_defines.
+ (mips*-*-linux*): Likewise.
+
+2006-03-16 Roger Sayle <roger@eyesopen.com>
+ Daniel Speyer <dspeyer@wam.umd.edu>
+
+ PR middle-end/18259
+ * tree-dump.c (dump_real): New function.
+ (dequeue_and_dump) <REAL_CST>: Use it to dump FP constants.
+ * Makefile.in (REAL_H): New macro for dependencies on real.h.
+ (tree-dump.o): Add $(REAL_H) to the dependencies.
+
+2006-03-16 Roger Sayle <roger@eyesopen.com>
+
+ PR middle-end/21781
+ * real.c (real_from_string): If the mantissa is zero, don't bother
+ parsing the exponent as the result should always be zero.
+
+2006-03-16 Andreas Krebbel <krebbel1@de.ibm.com>
+
+ * simplify-rtx.c (simplify_plus_minus): Simplify within CONST terms.
+
+2006-03-16 Maxim Kuvyrkov <mkuvyrkov@ispras.ru>
+
+ * config/ia64/ia64.c (stops_p): Added explicit initialization.
+ (ia64_first_cycle_multipass_dfa_lookahead_guard_spec,
+ ia64_h_i_d_extended, ia64_set_sched_flags, ia64_speculate_insn,
+ ia64_needs_block_p, ia64_gen_check, ia64_sched_init_global,
+ ia64_sched_finish_global): New static functions to implement
+ hooks from gcc_target.sched.
+ (spec_check_no, max_uid, pending_data_specs): New static variables.
+ (ia64_mode_to_int, ia64_gen_spec_insn, ia64_spec_check_p,
+ ia64_spec_check_src_p): New static functions.
+ (ia64_adjust_cost): Renamed to ia64_adjust_cost_2.
+ (TARGET_SCHED_ADJUST_COST): Removed.
+ (TARGET_SCHED_ADJUST_COST_2, TARGET_SCHED_INIT_GLOBAL,
+ TARGET_SCHED_FINISH_GLOBAL, TARGET_SCHED_H_I_D_EXTENDED,
+ TARGET_SCHED_SPECULATE_INSN, TARGET_SCHED_NEEDS_BLOCK_P,
+ TARGET_SCHED_GEN_CHECK,
+ TARGET_SCHED_FIRST_CYCLE_MULTIPASS_DFA_LOOKAHEAD_GUARD_SPEC,
+ TARGET_SCHED_SET_SCHED_FLAGS): New macros.
+ (update_set_flags, group_barrier_needed, set_src_needs_barrier):
+ Fixed to handle speculation checks.
+ (rtx_needs_barrier): Fixed to handle speculative loads and
+ their checks.
+ (ia64_variable_issue): Added code to count speculative loads and their
+ checks.
+ (ia64_first_cycle_multipass_dfa_lookahead_guard): Fixed to handle
+ speculative loads.
+ (enum SPEC_MODES, enum SPEC_GEN_LD_MAP, SPEC_GEN_CHECK_OFFSET):
+ New enumerations.
+ (SPEC_GEN_EXTEND_OFFSET, SPEC_N, SPEC_GEN_CHECK_MUTATION_OFFSET):
+ New constants.
+ (ia64_ld_address_bypass_p): Fixed to handle speculative loads.
+ (ia64_reorg): Reset stops_p to NULL after it is freed.
+ * config/ia64/ia64.md (UNSPEC_LDA, UNSPEC_LDS, UNSPEC_LDSA,
+ UNSPEC_LDCCLR, UNSPEC_CHKACLR, UNSPEC_CHKS): New constants.
+ (itanium_class): chk_s renamed to chk_s_i. New constants: chk_s_f,
+ chk_a.
+ (data_speculative, control_speculative, check_load): New attributes.
+ (mov<mode>_advanced, mov<mode>_speculative,
+ mov<mode>_speculative_advanced, zero_extend<mode>di2_advanced,
+ zero_extend<mode>di2_speculative,
+ zero_extend<mode>di2_speculative_advanced): New patterns for
+ data and control speculative loads.
+ (mov<mode>_clr, zero_extend<mode>di2_clr): New patterns for
+ check loads.
+ (advanced_load_check_clr_<mode>, speculation_check_<mode>):
+ New pattern for data and control speculation checks.
+ (MODE, MODE_FOR_EXTEND, output_a, output_s, output_sa, output_c_clr,
+ ld_reg_constr, ldc_reg_constr, chk_reg_constr, mem_constr,
+ reg_pred_prefix, ld_class, chka_class, chks_class, attr_yes):
+ Auxiliary definitions for the patterns.
+ * config/ia64/itanium1.md (1_fldc, 1_fldpc, 1_ldc, 1_chk_s_f, 1_chk_a,
+ 1b_fldc, 1b_fldpc, 1b_ldc, 1b_chk_s_f, 1b_chk_a): New resource
+ constraints.
+ (1_fld, 1_fldp, 1_ld, 1b_fld, 1b_fldp, 1b_ld): Add a condition
+ for speculation.
+ (1_chk_s, 1b_chk_s): Renamed to 1_chk_s_i, 1b_chk_s_i.
+ * config/ia64/itanium2.md (2_flda, 2_fldc, 2_fldpc, 2_ldc, 2_chk_s_f,
+ 2_chk_a, 2b_flda, 2b_fldc, 2b_fldpc, 2b_ldc, 2b_chk_s_f, 2b_chk_a):
+ New resource constraints.
+ (2_fld, 2_fldp, 2_ld, 2b_fld, 2b_fldp, 2b_ld): Add a condition
+ for speculation.
+ (2_chk_s, 2b_chk_s): Renamed to 2_chk_s_i, 2b_chk_s_i.
+ * config/ia64/ia64.opt (msched-br-data-spec, msched-ar-data-spec,
+ msched-control-spec, msched-br-in-data-spec, msched-ar-in-data-spec,
+ msched-in-control-spec, msched-ldc, msched-control-ldc,
+ msched-spec-verbose, msched-prefer-non-data-spec-insns,
+ msched-prefer-non-control-spec-insns,
+ msched-count-spec-in-critical-path): New flags to tune speculative
+ scheduling.
+ * doc/invoke.texi (msched-br-data-spec, msched-ar-data-spec,
+ msched-control-spec, msched-br-in-data-spec, msched-ar-in-data-spec,
+ msched-in-control-spec, msched-ldc, msched-control-ldc,
+ msched-spec-verbose, msched-prefer-non-data-spec-insns,
+ msched-prefer-non-control-spec-insns,
+ msched-count-spec-in-critical-path): Document new flags.
+
+2006-03-16 Maxim Kuvyrkov <mkuvyrkov@ispras.ru>
+
+ * target.h (struct spec_info_def): New opaque declaration.
+ (struct gcc_target.sched): New fields: adjust_cost_2, h_i_d_extended,
+ speculate_insn, needs_block_p, gen_check,
+ first_cycle_multipass_dfa_lookahead_guard_spec, set_sched_flags.
+ * target-def.h (TARGET_SCHED_ADJUST_COST_2,
+ TARGET_SCHED_H_I_D_EXTENDED, TARGET_SCHED_SPECULATE_INSN,
+ TARGET_SCHED_NEEDS_BLOCK_P, TARGET_SCHED_GEN_CHECK,
+ TARGET_SCHED_FIRST_CYCLE_MULTIPASS_DFA_LOOKAHEAD_GUARD_SPEC,
+ TARGET_SCHED_SET_SCHED_FLAGS): New macros to initialize fields in
+ gcc_target.sched.
+ (TARGET_SCHED): Use new macros.
+ * rtl.h (copy_DEPS_LIST_list): New prototype.
+ * sched-int.h (struct sched_info): Change signature of new_ready field,
+ adjust all initializations. New fields: add_remove_insn,
+ begin_schedule_ready, add_block, advance_target_bb, fix_recovery_cfg,
+ region_head_or_leaf_p.
+ (struct spec_info_def): New structure declaration.
+ (spec_info_t): New typedef.
+ (struct haifa_insn_data): New fields: todo_spec, done_spec, check_spec,
+ recovery_block, orig_pat.
+ (glat_start, glat_end): New variables declaraions.
+ (TODO_SPEC, DONE_SPEC, CHECK_SPEC, RECOVERY_BLOCK, ORIG_PAT):
+ New access macros.
+ (enum SCHED_FLAGS): New constants: SCHED_RGN, SCHED_EBB,
+ DETACH_LIFE_INFO, USE_GLAT.
+ (enum SPEC_SCHED_FLAGS): New enumeration.
+ (NOTE_NOTE_BB_P): New macro.
+ (extend_dependency_caches, xrecalloc, unlink_bb_notes, add_block,
+ attach_life_info, debug_spec_status, check_reg_live): New functions.
+ (get_block_head_tail): Change signature to get_ebb_head_tail, adjust
+ all uses in ddg.c, modulo-sched.c, haifa-sched.c, sched-rgn.c,
+ sched-ebb.c
+ (get_dep_weak, ds_merge): Prototype functions from sched-deps.c .
+ * ddg.c (get_block_head_tail): Adjust all uses.
+ * modulo-sched.c (get_block_head_tail): Adjust all uses.
+ (sms_sched_info): Initialize new fields.
+ (contributes_to_priority): Removed.
+ * haifa-sched.c (params.h): New include.
+ (get_block_head_tail): Adjust all uses.
+ (ISSUE_POINTS): New macro.
+ (glat_start, glat_end): New global variables.
+ (spec_info_var, spec_info, added_recovery_block_p, nr_begin_data,
+ nr_be_in_data, nr_begin_control, nr_be_in_control, bb_header,
+ old_last_basic_block, before_recovery, current_sched_info_var,
+ rgn_n_insns, luid): New static variables.
+ (insn_cost1): New function. Move logic from insn_cost to here.
+ (find_insn_reg_weight1): New function. Move logic from
+ find_insn_reg_weight to here.
+ (reemit_notes, move_insn, max_issue): Change signature.
+ (move_insn1): Removed.
+ (extend_h_i_d, extend_ready, extend_global, extend_all, init_h_i_d,
+ extend_bb): New static functions to support extension of scheduler's
+ data structures.
+ (generate_recovery_code, process_insn_depend_be_in_spec,
+ begin_speculative_block, add_to_speculative_block,
+ init_before_recovery, create_recovery_block, create_check_block_twin,
+ fix_recovery_deps): New static functions to support
+ generation of recovery code.
+ (fix_jump_move, find_fallthru_edge, dump_new_block_header,
+ restore_bb_notes, move_block_after_check, move_succs): New static
+ functions to support ebb scheduling.
+ (init_glat, init_glat1, attach_life_info1, free_glat): New static
+ functions to support handling of register live information.
+ (associate_line_notes_with_blocks, change_pattern, speculate_insn,
+ sched_remove_insn, clear_priorities, calc_priorities, bb_note,
+ add_jump_dependencies): New static functions.
+ (check_cfg, has_edge_p, check_sched_flags): New static functions for
+ consistancy checking.
+ (debug_spec_status): New function to call from debugger.
+ (priority): Added code to handle speculation checks.
+ (rank_for_schedule): Added code to distinguish speculative instructions.
+ (schedule_insn): Added code to handle speculation checks.
+ (unlink_other_notes, rm_line_notes, restore_line_notes, rm_other_notes):
+ Fixed to handle ebbs.
+ (move_insn): Added code to handle ebb scheduling.
+ (max_issue): Added code to use ISSUE_POINTS of instructions.
+ (choose_ready): Added code to choose between speculative and
+ non-speculative instructions.
+ (schedule_block): Added code to handle ebb scheduling and scheduling of
+ speculative instructions.
+ (sched_init): Initialize new variables.
+ (sched_finish): Free new variables. Print statistics.
+ (try_ready): Added code to handle speculative instructions.
+ * lists.c (copy_DEPS_LIST_list): New function.
+ * sched-deps.c (extend_dependency_caches): New function. Move logic
+ from create_dependency_caches to here.
+ (get_dep_weak, ds_merge): Make global.
+ * genattr.c (main): Code to output prototype for
+ dfa_clear_single_insn_cache.
+ * genautomata.c (DFA_CLEAR_SINGLE_INSN_CACHE_FUNC_NAME): New macros.
+ (output_dfa_clean_insn_cache_func): Code to output
+ dfa_clear_single_insn_cache function.
+ * sched-ebb.c (target_n_insns): Remove. Adjust all users to use
+ n_insns.
+ (can_schedule_ready_p, fix_basic_block_boundaries, add_missing_bbs):
+ Removed.
+ (n_insns, dont_calc_deps, ebb_head, ebb_tail, last_bb):
+ New static variables.
+ (begin_schedule_ready, add_remove_insn, add_block1, advance_target_bb,
+ fix_recovery_cfg, ebb_head_or_leaf_p): Implement hooks from
+ struct sched_info.
+ (ebb_sched_info): Initialize new fields.
+ (get_block_head_tail): Adjust all uses.
+ (compute_jump_reg_dependencies): Fixed to use glat_start.
+ (schedule_ebb): Code to remove unreachable last block.
+ (schedule_ebbs): Added code to update register live information.
+ * sched-rgn.c (region_sched_info): Initialize new fields.
+ (get_block_head_tail): Adjust all uses.
+ (last_was_jump): Removed. Adjust users.
+ (begin_schedule_ready, add_remove_insn, insn_points, extend_regions,
+ add_block1, fix_recovery_cfg, advance_target_bb, region_head_or_leaf_p):
+ Implement new hooks.
+ (check_dead_notes1): New static function.
+ (struct region): New fields: dont_calc_deps, has_real_ebb.
+ (RGN_DONT_CALC_DEPS, RGN_HAS_REAL_EBB): New access macros.
+ (BB_TO_BLOCK): Fixed to handle EBBs.
+ (EBB_FIRST_BB, EBB_LAST_BB): New macros.
+ (ebb_head): New static variable.
+ (debug_regions, contributes_to_priority): Fixed to handle EBBs.
+ (find_single_block_regions, find_rgns, find_more_rgns): Initialize
+ new fields.
+ (compute_dom_prob_ps): New assertion.
+ (check_live_1, update_live_1): Fixed to work with glat_start instead of
+ global_live_at_start.
+ (init_ready_list): New assertions.
+ (can_schedule_ready_p): Split update code to begin_schedule_ready.
+ (new_ready): Add support for BEGIN_CONTROL speculation.
+ (schedule_insns): Fixed code that updates register live information
+ to handle EBBs.
+ (schedule_region): Fixed to handle EBBs.
+ (init_regions): Use extend_regions and check_dead_notes1.
+ * params.def (PARAM_MAX_SCHED_INSN_CONFLICT_DELAY,
+ PARAM_SCHED_SPEC_PROB_CUTOFF): New parameters.
+ * doc/tm.texi (TARGET_SCHED_ADJUST_COST_2, TARGET_SCHED_H_I_D_EXTENDED,
+ TARGET_SCHED_SPECULATE_INSN, TARGET_SCHED_NEEDS_BLOCK_P,
+ TARGET_SCHED_GEN_CHECK,
+ TARGET_SCHED_FIRST_CYCLE_MULTIPASS_DFA_LOOKAHEAD_GUARD_SPEC,
+ TARGET_SCHED_SET_SCHED_FLAGS): Document.
+ * doc/invoke.texi (max-sched-insn-conflict-delay,
+ sched-spec-prob-cutoff): Document.
+
+2006-03-16 Maxim Kuvyrkov <mkuvyrkov@ispras.ru>
+
+ * sched-int.h (struct haifa_insn_data): New fields: resolved_deps,
+ inter_tick, queue_index.
+ (struct sched_info): Change signature of init_ready_list field.
+ Adjust all initializations.
+ (RESOLVED_DEPS): New access macro.
+ (ready_add): Remove prototype.
+ (try_ready): Add prototype.
+ * sched-rgn.c (init_ready_list): Use try_ready.
+ (schedule_region): Initialize
+ current_sched_info->{sched_max_insns_priority, queue_must_finish_empty}.
+ * sched-ebb.c (new_ready): Remove. Adjust ebb_sched_info.
+ (init_ready_list): Use try_ready.
+ (schedule_ebb): Initialize current_sched_info->sched_max_insns_priority.
+ * lists.c (remove_list_elem): Remove `static'.
+ (remove_free_INSN_LIST_elem): New function.
+ * rtl.h (remove_list_elem, remove_free_INSN_LIST_elem): Add prototypes.
+ * haifa-sched.c (INTER_TICK, QUEUE_INDEX): New macros.
+ (INVALID_TICK, MIN_TICK, QUEUE_SCHEDULED, QUEUE_NOWHERE, QUEUE_READY):
+ New constants.
+ (readyp): New variable.
+ (queue_remove, ready_remove_insn, fix_inter_tick, fix_tick_ready,
+ change_queue_index, resolve_dep): New static functions.
+ (try_ready): New function. Adjust callers in sched-rgn.c and
+ sched-ebb.c to use it instead of ready_add.
+ (clock_var): Move at the begining of file.
+ (rank_for_schedule): Fix typo.
+ (queue_insn): Add assertion. Handle QUEUE_INDEX.
+ (ready_lastpos): Enforce assertion.
+ (ready_add): Make it static. Handle QUEUE_INDEX. Add new argument,
+ update all callers.
+ (ready_remove_first, ready_remove): Handle QUEUE_INDEX.
+ (schedule_insn): Rewrite to use try_ready and resolve_dep.
+ (queue_to_ready): Use free_INSN_LIST_list.
+ (early_queue_to_ready): Fix typo.
+ (schedule_block): Init readyp. Move init_ready_list call after the
+ initialization of clock_var. Fix error in rejecting insn by
+ targetm.sched.dfa_new_cycle. Add call to fix_inter_tick. Remove code
+ that previously corrected INSN_TICKs. Add code for handling
+ QUEUE_INDEX.
+ (set_priorities): Fix typo.
+ (sched_init): Initialize INSN_TICK, INTER_TICK and QUEUE_INDEX.
+ Clarify comment and code that keeps current_sched_info->next_tail
+ non-null.
+
+2006-03-16 Maxim Kuvyrkov <mkuvyrkov@ispras.ru>
+
+ * sched-rgn.c (extend_rgns): New static function.
+ (find_rgns): Use it.
+ (gather_region_statistics, print_region_statistics): New static
+ functions.
+ * params.def (PARAM_MAX_SCHED_EXTEND_REGIONS_ITERS): New parameter.
+ * doc/invoke.texi (max-sched-extend-regions-iters): Document.
+
+2006-03-16 Maxim Kuvyrkov <mkuvyrkov@ispras.ru>
+ Andrey Belevantsev <abel@ispras.ru>
+
+ * ddg.c (build_intra_loop_deps): Adjust add_forward_dependence call.
+ * lists.c (unused_deps_list): New variable.
+ (free_list): Add assertions to verify the proper distinguishing
+ between INSN_LISTs and DEPS_LISTs.
+ (find_list_elem, remove_list_elem, remove_list_node): New static
+ functions.
+ (alloc_DEPS_LIST, free_DEPS_LIST, free_DEPS_LIST_node,
+ remove_free_INSN_LIST_elem, remove_free_DEPS_LIST_elem,
+ remove_free_INSN_LIST_node, remove_free_DEPS_LIST_node): New functions.
+ (alloc_INSN_LIST): Assert that the list we're working on is indeed
+ an INSN_LIST.
+ (free_INSN_LIST_node): Likewise.
+ * modulo-sched.c (current_sched_info): Initialize flags field.
+ * reg-notes.def: Exchange DEP_ANTI and DEP_OUTPUT.
+ * rtl.def (DEPS_LIST): Define.
+ * rtl.h: Declare new functions from lists.c.
+ * sched-deps.c (spec_dependency_cache): New static variable.
+ (maybe_add_or_update_back_dep_1, add_back_dep): New static functions.
+ (add_dependence): Change return type to void. Move the logic to ...
+ (add_or_update_back_dep_1): ... here. Handle speculative dependencies.
+ (delete_all_dependences): Add comment about forward_dependency_cache.
+ Handle spec_dependency_cache. Handle DEPS_LISTs.
+ (fixup_sched_groups): Clarify the change of priority of output
+ and anti dependencies.
+ (sched_analyze_2): Adjust add_dependence calls to create data
+ speculative dependence.
+ (add_forward_dependence): Renamed to add_forw_dep, change prototype.
+ Adjust all callers. Handle DEPS_LISTS.
+ (compute_forward_dependences): Use add_forw_dep. Sort LOG_LINKs in
+ presence of speculation.
+ (init_dependency_caches, free_dependency_caches):
+ Handle spec_dependency_cache.
+ (adjust_add_sorted_back_dep, adjust_back_add_forw_dep, delete_forw_dep,
+ estimate_dep_weak, get_dep_weak, ds_merge, check_dep_status):
+ New static functions.
+ (add_or_update_back_dep, add_or_update_back_forw_dep,
+ add_back_forw_dep, delete_back_forw_dep): New functions.
+ * sched-int.h (ds_t, dw_t): New typedefs.
+ (struct sched_info): Add new field flags.
+ (struct haifa_insn_data): Add new bitfield has_internal_dep.
+ Prototype new sched-deps.c functions.
+ (HAS_INTERNAL_DEP, DEP_STATUS): New access macros.
+ (BITS_PER_DEP_STATUS, BITS_PER_DEP_WEAK, DEP_WEAK_MASK, MAX_DEP_WEAK,
+ MIN_DEP_WEAK, NO_DEP_WEAK, UNCERTAIN_DEP_WEAK, BEGIN_DATA, BE_IN_DATA,
+ BEGIN_CONTROL, BE_IN_CONTROL, BEGIN_SPEC, DATA_SPEC, CONTROL_SPEC,
+ SPECULATIVE, BE_IN_SPEC, FIRST_SPEC_TYPE, LAST_SPEC_TYPE,
+ SPEC_TYPE_SHIFT, DEP_TRUE, DEP_OUTPUT, DEP_ANTI, DEP_TYPES, HARD_DEP):
+ New constants.
+ (enum SPEC_TYPES_OFFSETS, enum DEPS_ADJUST_RESULT, enum SCHED_FLAGS):
+ New enums.
+ * sched-rgn.c (current_sched_info): Initialize flags field.
+ (schedule_insns): Initialize current_sched_info before the sched_init
+ call.
+ * sched-ebb.c (current_sched_info): Initialize flags field.
+ (add_deps_for_risky_insns): Use control_flow_insn_p instead of JUMP_P.
+ Call add_or_update_back_dep instead of add_dependence.
+ Create control speculative dependencies.
+ (schedule_insns): Initialize current_sched_info before the sched_init
+ call.
+
+2006-03-16 Kaz Kojima <kkojima@gcc.gnu.org>
+
+ * config/sh/linux-unwind.h (shmedia_fallback_frame_state): Set
+ fs->signal_frame.
+ (sh_fallback_frame_state): Likewise.
+
+2006-03-15 Geoffrey Keating <geoffk@apple.com>
+
+ * config.gcc (*-*-darwin*): Don't build crt2.o for all Darwin ports.
+ Do switch on default_use_cxa_atexit.
+ (powerpc*-*-darwin*): Build crt2.o on powerpc.
+ * config/darwin-crt3.o: New.
+ * config/darwin.h (LINK_SPEC): If -shared-libgcc, make linker default
+ to 10.3. Pass '-multiply_defined suppress' if crt3.o is in use.
+ (STARTFILE_SPEC): Add crt3.o when -shared-libgcc and appropriate
+ OS version.
+ * config/rs6000/t-darwin: Move crt2.o building to here.
+ * config/rs6000/darwin.h (C_COMMON_OVERRIDE_OPTIONS): Update
+ Mac OS version for using __cxa_get_exception_ptr. Don't test versions
+ of __cxa_atexit.
+
+2006-03-15 Jan-Benedict Glaw <jbglaw@lug-owl.de>
+
+ * config/vax/vax.c (nonindexed_address_p): Change logical negation
+ from '! xxx' to '!xxx' for coding-style conformance.
+ * config/vax/vax.h (PCC_BITFIELD_TYPE_MATTERS): Likewise.
+ (EXTRA_CONSTRAINT): Likewise.
+ * config/vax/vax.md (four unnamed insns): Likewise.
+
+2006-03-15 Paul Brook <paul@codesourcery.com>
+
+ * config/arm/arm.c (minipool_pad): New.
+ (add_minipool_forward_ref): Include pool alignment padding in address
+ calculation.
+ (push_minipool_fix): Set minipool_pad.
+ (minipool_pad): Ditto.
+
+2006-03-15 Jan-Benedict Glaw <jbglaw@lug-owl.de>
+
+ * config/vax/vax.c (split_quadword_operands): Use MEM_P()
+ instead of GET_CODE() == MEM and REG_P() instead of
+ GET_CODE() == REG.
+ (print_operand_address): Likewise.
+ (vax_address_cost): Likewise.
+ (vax_rtx_costs): Likewise.
+ (vax_notice_update_cc): Likewise.
+ (vax_output_int_add): Likewise.
+ (INDEX_REGISTER_P): Likewise.
+ (BASE_REGISTER_P): Likewise.
+ (nonindexed_address_p): Likewise.
+ (vax_mode_dependent_address_p): Likewise.
+ * config/vax/vax.h (EXTRA_CONSTRAINT): Likewise.
+ (PRINT_OPERAND): Likewise.
+ * config/vax/vax.md (ashlsi3): Likewise.
+ (ashlsi3): Likewise.
+ (some more unnamed insns): Likewise.
+
+2006-03-15 Kazu Hirata <kazu@codesourcery.com>
+
+ * tree-ssa-dce.c (EXECUTE_IF_CONTROL_DEPENDENT): Make it an
+ iterator-style macro.
+ (mark_control_dependent_edges_necessary): Update the use of
+ EXECUTE_IF_CONTROL_DEPENDENT.
+
+2006-03-15 J"orn Rennecke <joern.rennecke@st.com>
+
+ * config/sh/predicates.md (cache_address_operand): Special.
+ (ua_address_operand): Likewise.
+
+2006-03-15 Zdenek Dvorak <dvorakz@suse.cz>
+
+ * haifa-sched.c (unlink_other_notes, reemit_notes): Do not handle
+ loop notes.
+ * sched-deps.c (sched_analyze_insn, sched_analyze): Ditto.
+
+2006-03-15 Andreas Schwab <schwab@suse.de>
+
+ * gensupport.c (identify_predicable_attribute): Don't free p_false
+ when it is still in use.
+
+2006-03-15 Eric Botcazou <ebotcazou@libertysurf.fr>
+
+ * config.gcc (default with_cpu setting) <sparc*-*-*>: Do not modify
+ the default setting here.
+
+2006-03-14 Steven Bosscher <stevenb.gcc@gmail.com>
+
+ * tree-pass.h (pass_cfg): Remove.
+ * alias.c (rest_of_handle_cfg, pass_cfg): Remove.
+ * passes.c (pass_cfg): Don't run it.
+
+2006-03-14 Kazu Hirata <kazu@codesourcery.com>
+
+ * Makefile.in (reg-stack.o): Don't depend on gt-reg-stack.h.
+ * reg-stack.c (stack_regs_mentioned_data): Change the type to
+ VEC(char,heap) *.
+ (stack_regs_mentioned): Update the uses of
+ stack_regs_mentioned_data. Don't access the array beyond its
+ end.
+ (reg_to_stack): Update the uses of stack_regs_mentioned_data.
+ Don't include gt-reg-stack.h.
+
+ * config/bfin/bfin.h (UNALIGNED_WORD_ASM_OP): Remove.
+ * system.h (UNALIGNED_WORD_ASM_OP): Poison.
+
+ * combine.c (UWIDE_SHIFT_LEFT_BY_BITS_PER_WORD): Remove.
+
+ PR middle-end/26684
+ * reg-stack.c (stack_regs_mentioned_data): Put it undef #ifdef
+ STACK_REGS.
+
+2006-03-14 John David Anglin <dave.anglin@nrc-cnrc.gc.ca>
+
+ * pa/pa32-linux.h (CRT_CALL_STATIC_FUNCTION): Fix typo.
+
+2006-03-14 Richard Guenther <rguenther@suse.de>
+
+ PR tree-optimization/26672
+ * tree-ssa-propagate.c (set_rhs): Don't walk DEFs if not in
+ SSA form.
+
+2006-03-14 Richard Guenther <rguenther@suse.de>
+
+ PR tree-optimization/26667
+ * ipa-inline.c (cgraph_check_inline_limits): Walk the correct
+ node for the callees. Always allow inlining if it will shrink
+ the function size.
+
+2006-03-14 Richard Guenther <rguenther@suse.de>
+
+ PR middle-end/26659
+ * builtins.c (get_pointer_alignment): Prefer alignment
+ information from decls over that from types.
+
+2006-03-14 Andrew Pinski <pinskia@physics.uc.edu>
+
+ PR target/26657
+ * config/darwin.h (LINK_COMMAND_SPEC): Handle -fopenmp.
+
+2006-03-14 Joseph S. Myers <joseph@codesourcery.com>
+
+ * config/rs6000/rs6000.opt (mdlmzb): New option.
+ (msched-prolog, msched-epilog): Use Var not Mask.
+ * doc/invoke.texi (-mdlmzb): Document.
+ * config/rs6000/rs6000.c (TARGET_DEFAULT_TARGET_FLAGS): Remove
+ MASK_SCHED_PROLOG.
+ (rs6000_override_options): Enable -mdlmzb for 405 and 440.
+ * config/rs6000/rs6000.md: Add dlmzb support for 405 and 440.
+
+2006-03-13 Uttam Pawar <uttamp@us.ibm.com>
+
+ PR rtl-optimization/25739
+ * bt-load.c (augment_live_range): Free tos pointer.
+
+ * gensupport.c (identify_predicable_attribute): Free
+ p_false pointer.
+ * gcov.c (create_file_names): Free name pointer.
+
+2006-03-13 Roger Sayle <roger@eyesopen.com>
+
+ PR middle-end/26557
+ * stmt.c (emit_case_nodes): Handle the case where the index is a
+ CONST_INT, where the comparison mode is specified by the index type.
+
+2006-03-13 John David Anglin <dave.anglin@nrc-cnrc.gc.ca>
+
+ * pa/pa32-linux.h (CRT_CALL_STATIC_FUNCTION): Define when CRTSTUFFS_O
+ is defined.
+
+2006-03-13 Richard Sandiford <richard@codesourcery.com>
+
+ * config/mips/mips.md (*branch_fp): Use %Z2 for the condition.
+ (*branch_fp_inverted): Likewise.
+
+2006-03-13 Jakub Jelinek <jakub@redhat.com>
+
+ PR middle-end/25989
+ * omp-low.c (expand_omp_for_generic): Mark istart0
+ and iend0 as addressable.
+
+2006-03-13 Jie Zhang <jie.zhang@analog.com>
+
+ * config/bfin/uclinux.h: Define _GNU_SOURCE in CPLUSPLUS_CPP_SPEC.
+
+2006-03-13 Jeff Law <law@redhat.com>
+
+ * tree-vrp.c (stmt_interesting_for_vrp): Some statements with
+ virtual operands are interesting.
+ (vrp_visit_stmt): Corresponding changes.
+
+2006-03-13 Bernd Schmidt <bernd.schmidt@analog.com>
+
+ * config/bfin/lib1funcs.asm (___umodsi3): Use stack to save contents
+ of RETS.
+ * config/bfin/bfin.h (TARGET_CPU_CPP_BUILTINS): If
+ TARGET_ID_SHARED_LIBRARY, define __ID_SHARED_LIB__.
+ * config/bfin/crti.S: Use it instead of __PIC__.
+ * config/bfin/crtn.S: Likewise.
+
+ * config/bfin/bfin.md (call_value_symbol, sibcall_value_symbol,
+ call_symbol, sibcall_symbol): Disallow if TARGET_ID_SHARED_LIBRARY,
+ not if flag_pic.
+ Lose 'G' modifier for call operand.
+ * config/bfin/bfin.c (print_operand) <case SYMBOL_REF>: Don't
+ recognize 'G' modifier.
+
+2006-03-13 Eric Botcazou <ebotcazou@adacore.com>
+
+ PR middle-end/18859
+ * gimplify.c (gimplify_switch_expr): Discard empty ranges.
+ * stmt.c (expand_case): Likewise.
+
+2006-03-13 Zdenek Dvorak <dvorakz@suse.cz>
+
+ PR rtl-optimization/26254
+ * loop-invariant.c (seq_insns_valid_p): New function.
+ (move_invariant_reg): Only emit new code if it is valid.
+
+2006-03-13 Zdenek Dvorak <dvorakz@suse.cz>
+
+ * cfgrtl.c (last_loop_beg_note, back_edge_of_syntactic_loop_p):
+ Removed.
+ (force_nonfallthru_and_redirect): Do not use last_loop_beg_note.
+ (rtl_split_edge): Do not use back_edge_of_syntactic_loop_p.
+ (commit_one_edge_insertion): Do not look for loop notes.
+
+2006-03-13 Zdenek Dvorak <dvorakz@suse.cz>
+
+ * jump.c (follow_jumps): Do not check for loop notes. Move check for
+ flag_test_coverage out of loop.
+
+2006-03-13 Zdenek Dvorak <dvorakz@suse.cz>
+
+ * final.c (shorten_branches): Remove outdated comment, and turn
+ the if branch that guards it to continue.
+
+2006-03-13 Zdenek Dvorak <dvorakz@suse.cz>
+
+ * cfgloop.c (flow_loop_dump): Do not dump loop->invalid field.
+ * cfgloop.h (struct loop): Remove unused fields.
+
+2006-03-13 Kazu Hirata <kazu@codesourcery.com>
+
+ * doc/invoke.texi (-fdump-rtl-loop): Remove.
+ (-dL, -fdump-rtl-loop2): Update the dump file names
+
+ * doc/invoke.texi: Update dump file names.
+
+2006-03-12 Steven Bosscher <stevenb.gcc@gmail.com>
+
+ * predict.c (estimate_probability): Remove.
+ * profile.c (rest_of_handle_branch_prob, pass_branch_prob): Remove.
+ * basic-block.h (estimate_probability): Remove prototype.
+ * passes.c (finish_optimization_passes): Dump branch prediction or
+ profiling heuristics to the .profile tree dump.
+ (init_optimization_passes): Unqueue pass_branch_prob.
+
+ * doc/invoke.texi (-fdump-rtl-bp): Remove.
+
2006-03-11 Steven Bosscher <stevenb.gcc@gmail.com>
* rtl.def (LABEL_REF): Remove the field for LABEL_NEXTREF.