From f7052523f64dee02643b14c514620db456b639cb Mon Sep 17 00:00:00 2001 From: Caroline Tice Date: Thu, 31 Mar 2005 11:38:44 -0800 Subject: [PATCH] Committing ChangeLog that goes with hot/cold partitioning fix I checked in... Committing ChangeLog that goes with hot/cold partitioning fix I checked in earlier today (I forgot to check in the ChangeLog at the time and only just noticed). From-SVN: r97347 --- gcc/ChangeLog | 176 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 176 insertions(+) diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 8a51317..dfd47ba 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -34,6 +34,182 @@ callers. (do_tlink): Check lderrout as well as ldout. +2005-03-31 Caroline Tice + + * Makefile.in (varasm.o): Add basic-block.h to list of requirements. + (bb-reorder.o): Add errors.h to list of requirements. + (STAGEFEEDBACK_FLAGS_TO_PASS): Add -freorder-blocks-and-partition to + profiledbootstrap flags. + * bb-reorder.c (errors.h): Add new include. + (struct bbro_basic_block_data_def): Add new field, in_trace. + (add_unlikely_executed_notes): Remove function. + (mark_bb_for_unlikely_executed_section): Remove function. + (insert_section_boundary_note): New function. + (verify_hot_cold_block_grouping): New function. + (push_to_next_round_p): Remove variables and tests that push all + cold blocks to last round. + (find_traces): Remove code that added extra round of trace finding + when doing partitioning. + (find_traces_1_round) : Remove variable last_round; add code to + update new struct field, in_trace; correct trace_length where it was + incorrect before (after call to copy_bb); change code that pushed all + cold blocks to last round. Instead verify that all blocks going into + a trace belong in the same partition. + (connect_traces): Modify to connect the traces in two passes, if the + function contains both hot and cold blocks. The first pass connects + all the traces for blocks in the partition that the first block in + the function belongs to; the second pass connnects all the traces + containing blocks that belong in the other partition. + (find_rarely_executed_basic_blocks_and_crossing_edges): Remove + code that automatically put the first block in a function into the + hot partition if the function had any hot blocks. + (fix_crossing_unconditional_branches): Check number of succ edges + before attempting to get one. + (fix_edges_for_rarely_executed_code): Update comment describing + function. + (reorder_basic_blocks): Add code to initialize new field (in_trace); + remove call to add_unlikely_executed_notes; add call to + verify_hot_cold_block_grouping. + (duplicate_computed_gotos): Don't change computed goto if it's a + crossing edge. + (partition_hot_cold_basic_blocks): Update function comment. + * cfgcleanup.c (try_simplify_condjump): Remove redundacy from + condition. + (try_forward_edges): Likewise. + (merge_blocks_move_predecessor_nojumps): Likewise. + (merge_blocks_move_successor_nojumps): Likewise. + (merge_blocks_move): Likewise. + (try_crossjump_bb): Likewise. + * cfglayout.c (update_unlikely_executed_notes): Remove function. + (fixup_reorder_chain): Remove code for adding UNLIKELY_EXECUTED_CODE + notes to cold bb's; remove call to update_unlikely_executed_notes. + (duplicate_insn_chain): change NOTE_INSN_UNLIKELY_EXECUTED_CODE to + NOTE_INSN_SWITCH_TEXT_SECTIONS. + * cfglayout.h (scan_ahead_for_unlikely_executed_note): Remove + function declaration. + * cfgrtl.c (can_delete_note_p): Remove UNLIKELY_EXECUTED_CODE note + from consideration. + (rtl_can_merge_blocks): Remove redundancy from condition. + (try_redirect_by_replacing_jump): Likewise. + (force_nonfallthru_and_redirect): Remove code for adding + UNLIKELY_EXECUTED_CODE notes to cold bb's. + (commit_one_edge_insertion): Likewise. + (cfg_layout_can_merge_blocks_p): Remove redundancy from condition. + * dbxout.c (FORCE_TEXT): Replace function_section with + current_function_section. + (struct dbx_debug_h): Add do_nothing function for new debug_hooks + function, switch_text_section. + (struct xcoff_debug): Likewise. + (dbxout_function_end): Add code to put out label diffs for both + hot and cold sections. + * debug.c (struct do_nothing_debug_hooks): Add do_nothing function + for new debug_hooks funciton, switch_text_section.. + * debug.h (struct gcc_debug_hooks): Add new function to debug_hooks, + switch_text_section. + * dwarf2out.c (struct dw_fde_struct): Add five new fields: + dw_fde_hot_section_label, dw_fde_hot_section_end_label, + dw_fde_unlikely_section_label, dw_fde_unlikely_section_end_label and + dw_fde_switched_sections. + (output_call_frame_info): Add test to see if function switches text + sections in the middle; if so, use appropriate extra hot and cold + section labels to compute size deltas for the hot and cold sections. + (dwarf2out_begin_prologue): Add code to initialize new fields in + dw_fde_struct. + (dwarf2out_switch_text_section): New function (invoked through + debug_hook); updates new fields in dw_fde_struct appropriately and + increments separate_line_info_table_in_use. + (dwarf2_debug_hooks): Initialize switch_text_section function to be + dwarf2out_switch_text_section. + (struct var_loc_node): Add new field, section_label. + (output_aranges): Add code to check whether in hot or cold section and + use the appropriate label in calculating deltas. + (output_ranges): Likewise. + (output_line_info): Add code to check which section we're in and + use appropriate hot/cold label. + (add_location_or_constant_value_attribute): Likewise. + (gen_subprogam_die): Modify arange attributes to use correct labels. + (dwarf2out_begin_block): Change call to function_section into call to + current_function_section. + (dwarf2out_end_block): Likewise. + (dwarf2out_source_line): Likewise. + (dwarf2out_var_location): Add code to check whether in hot or cold + section and use the appropriate label. + * except.c (output_function_exception_table): Change call to + function_section into call to current_function_section. + * final.c (profile_function): Likewise. + (scan_ahead_for_unlikely_executed_note): Remove function. + (final_scan_insn): Remove calls to + scan_ahead_for_unlikely_executed_note, and related code for switching + to cold section, except for the single time + NOTE_INSN_SWITCH_TEXT_SECTIONS may be encountered; add calls to + debug_hooks->switch_text_sections; replace appropriate calls to + function_section with calls to current_function_section. + * ifcvt.c (find_if_case_1): Remove redundancy from condition, add + test_bb to condition. + (find_if_case_2): Likewise. + * insn-notes.def: Change NOTE_INSN_UNLIKELY_EXECUTED_CODE to + NOTE_INSN_SWITCH_TEXT_SECTIONS. Update comment appropriately. + * opts.c (decode_options): Change warning about hot/cold partitioning + with exceptionss to inform (so as not to cause bootstrap failures); + remove warning about partitioning with DWARF debug info. + * output.h (current_function_section): Add new function decl. + (insert_section_boundary_note): Likewise. + (enum in_section): Move this declaration here from varasm.c. + (unlikely_section_label): Likewise. + (unlikely_text_section_name): Likewise. + (last_text_section_name): New global variable. + (last_text_section): Likewise. + (hot_section_label): Likewise. + (hot_section_end_label): Likewise. + (cold_section_end_label): Likewise. + * passes.c (rest_of_handle_final): Free unlikely_text_section_name. + * print-rtl.c (print_rtx): Change NOTE_INSN_UNLIKELY_EXECUTED_CODE + to NOTE_INSN_SWITCH_TEXT_SECTIONS. + * reg-stack.c (emit_swap_insn): Remove UNLIKELY_EXECUTED_CODE note + insn from consideration. + * sdbout.c (sdb_debug_hooks): Add do_nothing for new function, + switch_text_section. + * varasm.c (basic-block.h): Add new include. + (unlikely_section_label_printed): Remove global variable. + (unlikely_section_label): Make global variable not be static any more. + (unlikely_text_section_name): Likewise. + (hot_section_end_label): New global variable (not static) + (first_function_block_is_cold): Likewise. + (hot_section_label): Likewise. + (cold_section_end_label): Likewise.. + (last_text_section): New global variable, not static. + (last_text_section_name): New global variable, not static. + (initialize_cold_section_name): New function. + (enum in_section): Move declaration to output.h. + (text_section): Update last_text_section. + (unlikely_text_section): Replace code to determine cold section name + with call to initialize_cold_section_name; Add code to update + last_text_section; remove code for printing out label. + (named_section_real): Add code to update last_text_section and + last_text_section_name as appropriate. + (function_section): Change test for 'unlikely' to depend on + first_function_block_is_cold (moved old test to + current_function_section). + (current_function_section): New function. + (assemble_start_function): Move code that frees + unlikely_text_section_name; initialize hot_section_end_label; + print hot and cold section labels at the start of the function; + set first_function_block_is_cold, if appropriate; initialize l + ast_text_section; add call to insert_section_boundary_note. + (assemble_end_function): Add code to write out hot and cold section + end labels. + *vmsdbgout.c (vmsdbg_debug_hooks): Add do_nothing for new function, + switch_text_section. + * config/darwin.c (machopic_select_section): Replace incorrect + function in base_funs; update reloc for cold sections if necessary. + * config/darwin.h (SECTION_FUNCTION): Add code to update + last_text_section if appropriate. + (text_unlikely_section): Remove. + * config/sparc/sparc.c (sparc_output_deferred_case_vectors): Likewise. + * config/stormy16/stormy16.c (stormy_16_output_addr_vec): Likewise. + * config/xtensa/xtensa.c (override_options): Turn off hot/cold + partitioning for this architecture. + 2005-03-31 Olivier Hainque * dwarf2out.c (dwarf2out_frame_finish): Honor DWARF2_FRAME_INFO -- 2.7.4