This is the mail archive of the gcc-patches@gcc.gnu.org mailing list for the GCC project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

Re: Get rid of NOTE_LINE_NUMBER infrastructure


On 5/4/07, Jan Hubicka <jh@suse.cz> wrote:
Hi,
this patch cleans up the infrastructure for INSN_NOTEs after removal of line
number notes.  In particular:
  1) Now misnamed NOTE_LINE_NUMBER is now NOTE_KIND (for symmetry with
  REG_NOTE_KIND)
  2) 4th field of NOTEs is now unused.  We need to keep 5th around for
  code label replacement code and it is not big deal since we anyway
  need all INSN containers to be of same size (at least BARRIER is
  artifically bumped up in size)
  3) I've dropped squeeze_notes that is moving around block notes and
  was dead for a while, since block notes appears very late
  4) Code for handling line number notes was dropped from print-rtl and firends.
  5) SET_INSN_DELETED and NOTE_INSN_BASIC_BLOCK_P is now used more consistently
  replacing the unwound sequence
  6) I've dropped code from sh.c dealing with LOOP notes since it was dead
  since GCC 4.0.0 and no one complained
  7) emit_note and friends now take the enum insn_note as argument instead
  of line number
  8) NOTE_INSN_* enum now starts at 0 instead of -100.
  9) SET_INSN_DELETED is now used more consistenly (it was still present
  in backend code that would not compile with mapped locations)

It is long and mechanical too ;) I've inspected by hand each occurence
of NOTE_LINE_NUMBER by hand to see if it is still needed, hope I got it
right.

Bootstrapped/regtested i686-linux, I've also verified that sh-elf builds
(since there was quite few changes to sh).  I am testing ppc-linux and
ia64-linux.

:ADDPATCH middle-end:

This is ok for mainline.


Thanks,
Richard.

:REVIEWMAIL:

Honza

        * gengtype.c (adjust_field_rtx_def): Use NOTE_KIND instead of
        NOTE_LINE_NUMBER; use NOTE_INSN_BASIC_BLOCK_P when possible.
        * ddg.c (create_ddg): LIkewise.
        * final.c (final): Remove hunk moving line numbernotes around since
        they are no longer present at this stage.
        (final_scan_insn): Use NOTE_KIND instead of
        NOTE_LINE_NUMBER; use NOTE_INSN_BASIC_BLOCK_P when possible.
        (output_asm_label): Likewise.
        * reorg.c (dbr_schedule): Likewise.
        * haifa-sched.c (unlink_other_notes): Likewise.
        * mode-switching.c (optimize_mode_switching): Likewise.
        * graph.c (start_bb): Likewise.
        * rtl.def (NOTE): Update description.
        * jump.c (squeeze_notes): Delete.
        (mark_jump_label): Use NOTE_KIND instead of NOTE_LINE_NUMBER; use
        NOTE_INSN_BASIC_BLOCK_P when possible.
        * ifcvt.c (dead_or_predicable): Remove call of squeeze_notes.
        * dwarf2out.c (gen_label_die): Use NOTE_KIND instead of
        NOTE_LINE_NUMBER; use NOTE_INSN_BASIC_BLOCK_P when possible.
        (dwarf2out_var_location): Likewise.
        * cfgbuild.c (make_edges): Likewise.
        (find_basic_blocks_1): Likewise.
        * function.c (reorder_blocks_1): Likewise.
        (epilogue_done): Likewise.
        (reposition_prologue_and_epilogue_notes): Likewise.
        * print-rtl.c (print_rtx): Likewise; drop code for printing line number
        notes.
        (print_rtl): Likewise.
        (print_rtl_single): Likewise.
        * gcse.c (insert_insn_start_bb): Likewise.
        * alias.c (init_alias_analysis): Likewise.
        * calls.c (fixup_tail_calls): Likewise.
        * except.c (sjlj_emit_function_enter): Likewise.
        * emit-rtl.c (add_insn_after): Likeiwse.
        (emit_label_before): Likewise.
        (emit_label_after): Likewise.
        (emit_note_before, emit_note_after, emit_note): Update
        parameter to be enum insn_note; do not deal with source
        files.
        * cfgcleanup.c (merge_blocks_move_predecessor_nojumps):
        Use NOTE_KIND instead of NOTE_LINE_NUMBER; use NOTE_INSN_BASIC_BLOCK_P
        when possible.
        (merge_blocks_move_successor_nojumps): Simplify now when
        we don't have BLOCK notes.
        (try_optimize_cfg): Likewise.
        * cfglayout.c (skip_insns_after_block): Likewise.
        (record_effective_endpoints): Likewise.
        (duplicate_insn_chain): Likewise.
        * varasm.c (output_constant_pool_1): Likewise.
        * sched-deps.c (sched_analyze): Likewise.
        * rtl.c (NOTE_INSN_MAX_isnt_negative_adjust_NOTE_INSN_BIAS):
        Exterminate.
        (note_insn_name): Simplify now when NOTE_INSN_BIAS is gone.
        * rtl.h (NOTE_SOURCE_LOCATION, NOTE_EXPANDED_LOCATION): Exterminate.
        (SET_INSN_DELETED): Simplify.
        (NOTE_LINE_NUMBER): Exterminate.
        (NOTE_LINE_KIND): New.
        (NOTE_INSN_BASIC_BLOCK_P): Update.
        (enum insn_note): Simplify.
        (GET_NOTE_INSN_NAME) Simplify.
        (emit_note_before, emit_note_after, emit_note): Update prototype.
        (squeeze_notes): Remove.
        * sched-int.h (NOTE_NOT_BB_P): Update.
        * resource.c (mark_target_live_regs): Update.
        * sched-rgn.c (debug_dependencies): Update.
        * sched-vis.c (print_insn): Update.
        * config/alpha/alpha.c (alpha_handle_trap_shadows): Update.
        * config/i386/i386.c (ix86_output_function_epilogue): Update.
        * config/sh/sh.c (sh_adjust_unroll_max): Function dead since gcc 4.0.0.
        (TARGET_ADJUST_UNROLL_MAX): Likewise.
        (split_branches): Update.
        (sh_optimize_target_register_callee_saved): Remove hunk dead since gcc
        4.0.0.
        (sh_adjust_unroll_max): Exterminate.
        * config/c4x/c4x.c (c4x_reorg): Use SET_INSN_DELETED.
        * config/m68hc11/m68hc11.c (m68hc11_check_z_replacement): Likewise.
        (m68hc11_reorg): Likewise.
        * config/ia64/ia64.c (emit_insn_group_barriers): Update.
        (emit_predicate_relation_info): Update.
        (process_for_unwind_directive): Update.
        * config/rs6000/rs6000.c (rs6000_output_function_epilogue): Update.
        (output_call): Update.
        * config/pa/pa.c (output_lbranch): Update.
        (output_millicode_call): Update.
        (output_call): Update.
        (pa_combine_instructions): Update.
        * config/mips/mips.c (mips16_gp_pseudo_reg): Update.
        * config/bfin/bfin.c (gen_one_bundle): Update.
        * cfgrtl.c (can_delete_note_p): Update.
        (delete_insn): Update.
        (rtl_merge_blocks): Update.
        (commit_one_edge_insertion): Update.
        (rtl_verify_flow_info): Update.
        * stmt.c (expand_case): Do not call squeeze_notes.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]