This is the mail archive of the
gcc-patches@gcc.gnu.org
mailing list for the GCC project.
Re: Line number handling in RTL reorganization
> On Fri, Jun 06, 2003 at 10:41:00AM +0200, Jan Hubicka wrote:
> > * cfglayout.c (insn_scope): New static function
> > (block_locators_*, line_locators*, file_locators*): New static varrays.
> > (scope_to_insns_initialize): Use them.
> > (insn_line, insn_file): New functions.
> > (scope_to_insns_finalize): Use insn_scope.
> > (prologue_locator, epilogue_locator): New global variables.
> > * emit-rt.c (try_split, make_insn_raw, make_jump_insn_raw,
> > make_call_insn_raw, emit_copy_of_insn_after): Use locators.
> > (emit_insn_after_scope, emit_insn_before_scope
> > emit_jump_insn_after_scope, emit_jump_insn_before_scope
> > emit_call_insn_after_scope, emit_call_insn_before_scope): Rename to...
> > (emit_insn_after_setloc, emit_insn_before_setloc
> > emit_jump_insn_after_setloc, emit_jump_insn_before_setloc
> > emit_call_insn_after_setloc, emit_call_insn_before_setloc): ... these;
> > use locators.
> > * final.c (notice_source_line): Use locators.
> > (final_start_function): Set initial source file and line.
> > (final_scan_insn): Use locators.
> > * ifcvt.c (noce_try_store_flag, noce_try_store_flag_constants,
> > noce_try_addcc, noce_try_store_flag_mask, noce_try_cmove,
> > noce_try_cmove_arith, noce_try_minmax, noce_try_abs,
> > noce_process_if_block, find_cond_trap): Likewise.
> > * integrate.c (copy_insn_list): Likewise.
> > * jump.c (duplicate_loop_exit_test): LIkewise.
> > * print-rtl.c (print_rtx): Print locators.
> > * recog.c (peephole2_optimize): Likewise.
> > * rtl.h (INSN_SCOPE): Remove.
> > (emit_insn_after_scope, emit_insn_before_scope
> > emit_jump_insn_after_scope, emit_jump_insn_before_scope
> > emit_call_insn_after_scope, emit_call_insn_before_scope): Rename to...
> > (emit_insn_after_setloc, emit_insn_before_setloc
> > emit_jump_insn_after_setloc, emit_jump_insn_before_setloc
> > emit_call_insn_after_setloc, emit_call_insn_before_setloc): ... these;
> > (insn_file, insn_line, prologue_locator, epilogue_locator): Declare.
> > * unroll.c (copy_loop_body): Use locators.
> > * function.c (set_insn_locators): New function.
> > (thread_prologue_and_epilogue_insns): Set the locators accordingly.
>
> Ok.
>
> > ! static varray_type GTY(()) block_locators_locs;
> > ! static varray_type GTY(()) block_locators_blocks;
> > ! static varray_type GTY(()) line_locators_locs;
> > ! static varray_type GTY(()) line_locators_lines;
> > ! static varray_type GTY(()) file_locators_locs;
> > ! static varray_type GTY(()) file_locators_files;
>
> I'm not really fond of this as a datastructure, but that's
> not as important as the interface, which looks ok.
Me neither, but I found it only way to get it garbagecollected without
introducing new global structures known by varray code that is similarly
ugly. I can switch to that alternative or do something different if you
can figure out what.
Concerning gimple, I hope that we will use the same scheme (locators)
for both - it is not RTL specific.
Honza
>
>
> r~