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: 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~


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