diff options
Diffstat (limited to 'gcc/ChangeLog')
-rw-r--r-- | gcc/ChangeLog | 447 |
1 files changed, 447 insertions, 0 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 11d2c281c27..7f89406d944 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,450 @@ +2002-11-19 Vladimir Makarov <vmakarov@redhat.com> + + * haifa-sched.c (choice_entry): New structure. + (choice_stack, cycle_issued_insns): New variables. + (max_issue): Rewrite it. + (choose_ready): Set up ready_try for unknown insns too. + (schedule_block): Allocate and free choice_stack. Set up + and modify cycle_issued_insns. + + * config/ia64/ia64.c (issue_nops_and_insn): Combine insn issue + with and without filling the bundle. + (bundling): Combine calls of issue_nops_and_insn. + +2002-10-17 Vladimir Makarov <vmakarov@redhat.com> + + * config/ia64/itanium1.md: New file. + + * config/ia64/itanium2.md: New file. + + * config/ia64/ia64.md: Move DFA descriptions into the new files. + Remove the old pipeline description. + + * config/ia64/ia64.c (ia64_override_options): Add aliases of + itanium processor names. + +2002-10-16 Vladimir Makarov <vmakarov@redhat.com> + + * config/ia64/ia64.c (bundling): Print states for Itanium2 too. + (ia64_reorg): Set up queried unit codes for Itanium2 too. + + * config/ia64/ia64.md: Add descriptions for Itanium2. + +2002-10-08 Vladimir Makarov <vmakarov@redhat.com> + + * config/ia64/ia64.h (processor_type): New enumeration. + (ia64_cpu, ia64_cpu_string): New external declarations. + (TARGET_OPTIONS): Add option `cpu='. + + * config/ia64/ia64.c (ia64_cpu, ia64_cpu_string): New global + variables. + (ia64_override_options): Set up `ia64_cpu'. + (ia64_sched_reorder2): Set up `clocks' only for Itanium. + (ia64_dfa_new_cycle): Set up `add_cycles' only for Itanium. + (bundling): Add nops for MM-insns only for Itanium. + (ia64_reorg): Allocate and free `clocks' and `add_cycles' only for + Itanium. + + * config/ia64/ia64.md (cpu): New attribute. + (DFA description): Enable it only for Itanium. + +2002-10-08 Vladimir Makarov <vmakarov@redhat.com> + Richard Henderson <rth@redhat.com> + + * config/ia64/ia64.h (MASK_TUNE_STOP_BITS): Rename it to + MASK_EARLY_STOP_BITS. + (TARGET_TUNE_STOP_BITS): Rename it to TARGET_EARLY_STOP_BITS. + (TARGET_SWITCHES): Rename option `tune-stop-bits' to + `early-stop-bits'. + + * config/ia64/ia64.c (ia64_dfa_new_cycle, + final_emit_insn_group_barriers): Use TARGET_EARLY_STOP_BITS + instead of TARGET_TUNE_STOP_BITS. + + * doc/invoke.texi: Rename option `-mtune-stop-bits' to + `-mearly-stop-bits'. + + * config/ia64/ia64.c (automata_option "v"): Comment it. + +2002-10-07 Vladimir Makarov <vmakarov@redhat.com> + + * config/ia64/ia64.h (MASK_TUNE_STOP_BITS, TARGET_TUNE_STOP_BITS): + New macros. + (TARGET_SWITCHES): Add entries for the new option. + + * config/ia64/ia64.c (dfa_stop_insn, last_scheduled_insn, rtx + dfa_pre_cycle_insn, ia64_nop): Don't make them as roots for GC. + (stops_p, stop_before_p, clocks_length, clocks, add_cycles): New + global variables. + (ia64_sched_reorder2): Set up `clocks'. + (ia64_variable_issue): Set up `stops_p' and reset `stop_before_p'. + (ia64_dfa_new_cycle): Set up add_cycle. Permit sorting ready + queue when TARGET_TUNE_STOP_BITS. + (bundling): Insert additional nops for MM-insns. + (final_emit_insn_group_barriers): Add insertion of stop bits + according `stops_p'. + (ia64_reorg): Initiate the new varibales. + + * doc/invoke.texi: Add description of option `-mtune-stop-bits'. + +2002-10-02 Vladimir Makarov <vmakarov@redhat.com> + + * haifa-sched.c (schedule_block): Modify INSN_TICK of depended + insns at the end of block insn scheduling. + +2002-09-12 Geoffrey Keating <geoffk@apple.com> + + * ggc-common.c (ggc_mark_rtx_children_1): Update for changed name + mangling. + + The following changes are merged from pch-branch: + + * doc/gty.texi (GTY Options): Document %a. + * gengtype.c (do_scalar_typedef): New function. + (process_gc_options): Handle `length' option. + (set_gc_used_type): A pointer to an array of structures doesn't + qualify as a pointer to a structure. + (output_escaped_param): Add `%a' escape. + (write_gc_structure_fields): Allow 'desc' on array of unions. + (main): Define `uint8', `jword' and `JCF_u2' as scalars; use + do_scalar_typedef. + + * gengtype.c (enum rtx_code): Make global. + (rtx_format): Make global. + (rtx_next): New. + (gen_rtx_next): New. + (write_rtx_next): New. + (adjust_field_rtx_def): Skip fields marked by chain_next. + (open_base_files): Delete redundant prototype. + (write_enum_defn): New. + (output_mangled_typename): Correct abort call. + (write_gc_marker_routine_for_structure): Handle chain_next and + chain_prev options. + (finish_root_table): Don't output redundant \n. + (main): Call gen_rtx_next, write_rtx_next, write_enum_defn. + * c-tree.h (union lang_tree_node): Add chain_next option. + + * gengtype.h (NUM_PARAM): New definition. + (struct type): For TYPE_PARAM_STRUCT, allow multiple parameters. + * gengtype.c (find_param_structure): New. + (adjust_field_type): Handle param<n>_is option. + (process_gc_options): Detect use_params option. Update callers. + (set_gc_used_type): Add 'param' parameter, update callers. Handle + 'use_params' option. + (open_base_files): Add splay-tree.h to list of files included. + (output_mangled_typename): New. + (write_gc_structure_fields): Update 'param' parameter to support + multiple parameters. Change name mangling. Allow parameterized + fields to have an apparent scalar type. Handle param<n>_is options, + use_param option. + (write_gc_marker_routine_for_structure): Update for change to name + mangling. Better guess the output file for parameterized types. + (write_gc_types): Update for change to name mangling. + (write_gc_root): Update for change to name mangling. Handle (ignore) + param<n>_is options. + * doc/gty.texi (GTY Options): Add description of param<n>_is + options, use_params option. + * ggc.h (ggc_mark_rtx): Update for changed name mangling. + * gengtype-lex.l: Produce token for param<n>_is. + * gengtype-yacc.y: Parse param<n>_is. + + * gengtype.c (adjust_field_tree_exp): Don't name a variable 'rindex'. + + * rtl.c: Update comment describing rtx_format. + * rtl.h (union rtunion): Separate definition and typedef. + (struct rtx_def): Use gengtype to mark. + * Makefile.in (gengtype.o): Also depend on rtl.def. + * ggc.h (ggc_mark_rtx_children): Delete prototype. + (ggc_mark_rtx): Change to alias of gengtype-generated routine. + * ggc-common.c (ggc_mark_rtx_children): Delete. + (ggc_mark_rtx_children_1): Delete. + (gt_ggc_m_rtx_def): Delete. + * gengtype.c (adjust_field_rtx_def): New. + (adjust_field_type): Call adjust_field_rtx_def. + (write_gc_structure_fields): Add 'default' case to switch if none + is specified; remove unused code. + + * tree.h (struct tree_exp): Update for change to meaning + of special. + * gengtype.c (adjust_field_tree_exp): New function. + (adjust_field_type): Handle `tree_exp' special here. + (write_gc_structure_fields): Don't handle `tree_exp' special here. + Handle new `dot' option. + + * gengtype.h: Make `info' a pointer-to-const. + * gengtype-yacc.y (yacc_ids): Use xasprintf. + + * gengtype.c (write_gc_structure_fields): Remove implementation + of `always' option, add `default' option. + * doc/gty.texi (GTY Options): Remove documentation of `always', + add `default'. + +2002-09-30 Vladimir Makarov <vmakarov@redhat.com> + + * sched-deps.c (remove_dependence, group_leader): Remove it. + (add_dependence): Add dependence to group leader to. + (set_sched_group_p): Add dependence to the first insn of the + schedule group too. + (sched_analyze_insn): Make dependence to jump as anti-dependence. + Change true dependence by anti-dependence when + `reg_pending_barrier'. + + * sched-rgn.c (init_ready_list, can_schedule_ready_p, + add_branch_dependences): Ignore schedule groups. + + * sched-ebb.c (init_ready_list): Ditto. + + * (move_insn, set_priorities): Ditto. + + * config/ia64/ia64.c (ia64_sched_init): Check that schedule group + flag is clear after reload. + (adjust_cost): Change cost only for output dependencies. + + * config/ia64/ia64.md: Add more insns into bypass for MM-insns. + +2002-09-26 Vladimir Makarov <vmakarov@redhat.com> + + * Makefile.in (sched-ebb.o): Add `$(TARGET_H)' to the entry. + + * target.h (gcc_target): Add member + `dependencies_evaluation_hook'. + + * target-def.h (TARGET_SCHED_DEPENDENCIES_EVALUATION_HOOK): New + macro. + (TARGET_SCHED): Add initiatialization of the new member. + + * sched-ebb.c: Include `target.h'. + (schedule_ebb): Call `dependencies_evaluation_hook'. + + * sched-rgn.c (schedule_region): Call + `dependencies_evaluation_hook'. + + * config/ia64/ia64.c (TARGET_SCHED_DEPENDENCIES_EVALUATION_HOOK): + New macro. + (ia64_dependencies_evaluation_hook): New function. + + * doc/tm.texi (TARGET_SCHED_DEPENDENCIES_EVALUATION_HOOK): + Describe the new hook. + +2002-09-25 Vladimir Makarov <vmakarov@redhat.com> + + * target.h (gcc_target): Add members + `first_cycle_multipass_dfa_lookahead_guard' and `dfa_new_cycle'. + + * target-def.h (TARGET_SCHED_DFA_NEW_CYCLE, + TARGET_SCHED_FIRST_CYCLE_MULTIPASS_DFA_LOOKAHEAD_GUARD): New + macros. + (TARGET_SCHED): Add initiatialization of the new members. + + * haifa-sched.c (schedule_insn): Update last_clock_var for the 1st + insn scheduling too. + (choose_ready): Use `first_cycle_multipass_dfa_lookahead_guard' to + initialize `ready_try'. + (schedule_block): Use `dfa_new_cycle'. Sort `ready' only unless + `dfa_new_cycle' says not to do it. + + * config/ia64/ia64.md: Add DFA Itanium 1 description for insn + bundling. + + * config/ia64/ia64.h (CPU_UNITS_QUERY): New macro. + + * config/ia64/ia64.c: Include `hashtab.h'. + (ia64_first_cycle_multipass_dfa_lookahead_guard, + ia64_dfa_new_cycle, final_emit_insn_group_barriers, + ia64_dfa_sched_reorder, get_free_bundle_state, free_bundle_state, + initiate_bundle_states, finish_bundle_states, bundle_state_hash, + bundle_state_eq_p, insert_bundle_state, + initiate_bundle_state_table, finish_bundle_state_table, + try_issue_nops, try_issue_insn, issue_nops_and_insn, get_max_pos, + get_template, get_next_important_insn, bundling): New functions. + (ia64_internal_sched_reorder): Remove it. + (TARGET_SCHED_FIRST_CYCLE_MULTIPASS_DFA_LOOKAHEAD_GUARD, + TARGET_SCHED_DFA_NEW_CYCLE): New macros. + (ia64_safe_itanium_requires_unit0): Remove it. + (group_barrier_needed_p): Place group barrier right before a real + insn. + (bundle, ia64_packet, NR_PACKETS, type_names, packets, packets): + Remove them. + (bundle_name): New variable. + (_0mii_, _0mmi_, _0mfi_, _0mmf_, _0bbb_, _0mbb_, _0mib_, _0mmb_, + _0mfb_, _0mlx_, _1mii_, _1mmi_, _1mfi_, _1mmf_, _1bbb_, _1mbb_, + _1mib_, _1mmb_, _1mfb_, _1mlx_, pos_1, pos_2, pos_3, pos_4, pos_5, + pos_6, dfa_stop_insn, last_scheduled_insn, dfa_state_size, + temp_dfa_state, prev_cycle_state): New global variables. + (insn_matches_slot, maybe_rotate, finish_last_head, + rotate_one_bundle, rotate_one_bundles, nop_cycles_until, + cycle_end_fill_slots, packet_matches_p, get_split, find_best_insn, + find_best_packet, itanium_reorder, dump_current_packet, + schedule_stop, gen_nop_type, ia64_emit_nops): Remove them. + (sched_data, sched_ready, sched_types): Remove them. + (ia64_sched_init): Initiate only `last_scheduled_insn' and call + `init_insn_group_barriers'. + (ia64_sched_reorder, ia64_sched_reorder2): Call + ia64_dfa_sched_reorder. + (ia64_variable_issue): Rewrite it. + (bundle_state): New structure. + (index_to_bundle_states, bundle_states_num, + allocated_bundle_states_chain, free_bundle_state_chain): New + global variables. + (ia64_sched_finish): Add stop bits and call `bundling' after the + 2nd insn scheduling. + (ia64_use_dfa_pipeline_interface): Return zero always. + (ia64_first_cycle_multipass_dfa_lookahead): Return 6 for the 2nd + insn scheduling. + (ia64_init_dfa_pre_cycle_insn): Initialize `dfa_state_size', + `temp_dfa_state', `prev_cycle_state', and `dfa_stop_insn'. + (ia64_reorg): Add bundling insns. + + * doc/tm.texi + (TARGET_SCHED_FIRST_CYCLE_MULTIPASS_DFA_LOOKAHEAD_GUARD, + TARGET_SCHED_DFA_NEW_CYCLE): Describe the new hooks. + +2002-09-23 Vladimir Makarov <vmakarov@redhat.com> + + * config/ia64/ia64.md: Add Itanium1 DFA description. + (itanium_class): Add `nop' and `pre_cycle'. Add + define_function_unit for `nop'. + (nop): Change attribute `itanium_class'. + (pre_cycle): New define_insn. + + * config/ia64/ia64-protos.h (bundling_p): New external variable. + (ia64_st_address_bypass_p, ia64_ld_address_bypass_p, + ia64_produce_address_p): New function prototypes. + + * config/ia64/ia64.c (bundling_p): New global variable. + (ia64_use_dfa_pipeline_interface, + ia64_first_cycle_multipass_dfa_lookahead, + ia64_init_dfa_pre_cycle_insn, ia64_dfa_pre_cycle_insn): New + functions. + (TARGET_SCHED_USE_DFA_PIPELINE_INTERFACE, + TARGET_SCHED_FIRST_CYCLE_MULTIPASS_DFA_LOOKAHEAD, + TARGET_SCHED_INIT_DFA_PRE_CYCLE_INSN, + TARGET_SCHED_DFA_PRE_CYCLE_INSN): New macros. + (ia64_sched_init, ia64_sched_reorder, ia64_sched_reorder2, + ia64_variable_issue, ia64_sched_finish): Do nothing before reload. + (dfa_pre_cycle_insn): New variable. + +2002-09-20 Vladimir Makarov <vmakarov@redhat.com> + + * rtl.def (FINAL_PRESENCE_SET, FINAL_ABSENCE_SET): New + constructions. + + * genattrtab.h (gen_final_presence_set, gen_final_absence_set): + New function prototypes. + + * genattrtab.c (main): Process the new constructions. + + * genautomata.c (gen_presence_absence_set, + process_presence_absence_names, process_presence_absence_patterns, + add_presence_absence, check_absence_pattern_sets): Add parameter + `final_p'. + (unit_decl): Add new members `final_presence_list' and + `final_absence_list'. + (unit_pattern_rel_decl): Add new member `final_p'. + (gen_final_presence_set, gen_final_absence_set): New functions. + (process_decls): Use member `final_p'. + (temp_reserv): New global variable. + (reserv_sets_are_intersected): Add processing `final_presence_set' + and `final_absence_set'. + (initiate_states): Allocate `temp_reserv'. + (unit_final_presence_set_table, unit_final_absence_set_table): New + gloabal variables. + (initiate_presence_absence_pattern_sets): Initiate them. + (NDFA_to_DFA): Fix typo. + (output_description): Output `final_presence_set' and + `final_absence_set'. + + * doc/md.texi (final_presence_set, final_absence_set): Describe + them. + +2002-09-20 Vladimir Makarov <vmakarov@redhat.com> + + * genautomata.c (transform_3): Process a missing case (nothing on + unit place). + +2002-09-20 Vladimir Makarov <vmakarov@redhat.com> + + * rtl.def (DEFINE_QUERY_CPU_UNIT, AUTOMATA_OPTION): Change + comments about queried units and the minimization. + + * doc/md.texi: Ditto. + + * genautomata.c (create_composed_state): Return nonzero if the new + state has been created. + (first_cycle_unit_presence): New function. + (state_is_differed): Add new parameter. Use the new function. + Take queried units into account. + (partition_equiv_class): Pass additional parameter to + `state_is_differed'. + (merge_states): Process composed states too. + (build_automaton, create_automata, output_min_issue_delay_table, + output_tables, output_statistics): Output more information. + (output_reserved_units_table): Use function + `first_cycle_unit_presence'. + (output_tables): Output table of queried units even if the + minimization is switched on. + (write_automata): Output code for querying units even if the + minimization is switched on. + +2002-09-19 Vladimir Makarov <vmakarov@redhat.com> + + * rtl.def (PRESENCE_SET, ABSENCE_SET): Add comments about extended + syntax of the constructions. + + * doc/md.texi (PRESENCE_SET, ABSENCE_SET): Add description of + extended syntax of the constructions. + + * genautomata.c (unit_rel_decl): Rename it to + `unit_pattern_rel_decl'. + (pattern_set_el, pattern_reserv): New structures. + (pattern_set_el_t, pattern_reserv_t): New types. + (gen_presence_absence_set): New function. + (process_presence_absence): Remove it. + (process_presence_absence_names, + process_presence_absence_patterns): New functions. + (get_presence_absence_set): Remove it. + (initiate_presence_absence_sets): Rename it on + `initiate_presence_absence_pattern_sets'. Use new function + `form_reserv_sets_list'. + (form_reserv_sets_list, check_presence_pattern_sets, + check_absence_pattern_sets, output_pattern_set_el_list): New + functions. + (unit_decl): Change types of members `presence_list' and + `absence_list'. + (unit_rel_decl): Rename member `names_num' to `all_names_num'. + (decl): Change types of members `excl', `presence', and `absence'. + (get_str_vect): Rename `par_flag' to `paren_p'. Add null element + at the end of the vector. + (gen_cpu_unit, gen_query_cpu_unit, gen_bypass, gen_excl_set, + gen_automaton, gen_regexp_repeat, gen_regexp_allof, + gen_regexp_oneof, gen_regexp_sequence): Use boolean values. + (gen_presence_set, gen_absence_set): Use new function + `gen_presence_absence_set'. + (add_presence_absence): Process `pattern_list' instead of + `source_list'. + (process_decls): USe new functions + `process_presence_absence_names' and + `process_presence_absence_patterns'. + (reserv_sets_are_intersected): Use new function + `check_presence_pattern_sets'. + (presence_set, absence_set): Remove them. + (unit_presence_set_table, unit_absence_set_table): New global + variables. + (output_description): Use new function + `output_pattern_set_el_list'. + (generate): Use `initiate_presence_absence_pattern_sets'. + +2002-09-18 Vladimir Makarov <vmakarov@redhat.com> + + * genattr.c (main): Add output of prototype of new interface + function `dfa_clean_insn_cache'. + + * genautomata.c (output_dfa_clean_insn_cache_func): New function. + (DFA_CLEAN_INSN_CACHE_FUNC_NAME): New macro. + (output_dfa_start_func): Use function `dfa_clean_insn_cache' in + the generated code. + (write_automata): Call the new function. + 2002-09-12 Jason Merrill <jason@redhat.com> * calls.c (store_one_arg): Use size_in_bytes to determine the |