[dataflow]: PATCH COMMITTED
Kenneth Zadeck
zadeck@naturalbridge.com
Tue Nov 14 02:04:00 GMT 2006
This patch is several steps forward and at least one step back.
Incremental scanning now at least bootstraps for combine and all three
ifcvts on the x86-64. This patch also makes a lot of progress on the
ia-64. However we have added some regressions on the x86-64, most
likely due to the changes in regs_ever_live computation. We will have
our best people working on it, but we are running the risk of having the
west coast and east coast be badly out of sync, so we need to move
forward with this and we will fix the regressions later.
This patch also adds a new debugging paradigm that was heavily used at
Sun and also on the NaturalBridge compiler (one of the naturalbridge
principles came out of sun). This option allows passes to be stop making
changes after some number (given on the command line) transformations.
Once it is understood that some pass is creating problems, an
appropriate shell script, can then search to find the Nth transformation
that causes the failure.
Seongbae can explain this better since he did the implementation here.
In this patch it is only implemented in dce. But others will follow as
we need them.
Kenny
2006-11-13 Seongbae Park <seongbae.park@gmail.com>
Kenneth Zadeck <zadeck@naturalbridge.com>
* tree-pass.h (TODO_df_verify_scan): New flag.
* auto-inc-def.c (find_inc): Added code to check for case where
output of inc is not overwritten by mem to be combined.
* df-scan.c (df_scan_set_bb_info): Now increases the size of the
array if necessary.
(df_scan_blocks): Added flag to avoid recomputing regs_ever_live.
(df_insn_rescan): Fixed missing case for rescanning.
(df_insn_refs_collect): Special case for sibling calls. Changed
to not set up loc field with address of regno_reg_rtx element.
(df_entry_block_defs_collect, df_exit_block_uses_collect,
df_bb_refs_collect): Changed to not set up loc field with address
of regno_reg_rtx element.
(df_bb_refs_record): Removed dflow parameter and added scan_insn
parameter. Changed call to df_bb_refs_record.
(df_compute_regs_ever_live): New function.
(df_reg_chain_unmark): Made to accept NULL blocks parameter.
(df_ref_chain_unmark): New function.
(df_ref_verify): Added abort_if_fail parameter.
(df_insn_refs_verify): Added abort_if_fail and return_refs
parameter and changed function to return bool. Added code to
unmark chains.
(df_bb_refs_verify): Added abort_if_fail parameter and now returns
nothing.
(df_bb_verify): Changed to expect subroutines to abort.
(df_verify_blocks): Now accepts NULL blocks parameter.
* ifcvt.c (if_convert): Added more to dump_files.
* (pass_rtl_ifcvt, pass_if_after_combine, pass_if_after_reload):
added TODO_df_verify_scan.
* opts.c (command_handle_option): New flag OPT_fdbg_cnt_
* recog.c (confirm_change_group): Fixed updating of df scanning.
* function.c (thread_prologue_and_epilogue_insns):
Pass DF_NO_REGS_EVER_LIVE in df_init, and
call df_compute_regs_ever_live after prologue is generated.
* df.h (enum df_ref_flags): Added DF_REF_ARTIFICIAL.
(enum df_changeable_flags): Added DF_NO_REGS_EVER_LIVE.
(DF_REF_IS_ARTIFICIAL): Added checking for the flag DF_REF_ARTIFICIAL.
* cfgcleanup.c: Fixed typo in comment.
* common.opt: New flag -fdbg-cnt=
* combine.c (try_combine): Added calls to keep df_scanning up to
date.
(pass_combine): Added TODO_df_verify_scan.
* Makefile.in: New gcc object file dbgcnt.o
* passes.c (execute_todo): Added support for TODO_df_verify_scan.
* config/ia64/ia64.c (ia64_split_return_addr_rtx): Finalize
the frame layout early.
(ia64_expand_prologue): Pass DF_NO_REGS_EVER_LIVE to df_init().
* cfgrtl.c (rtl_delete_block, rtl_merge_blocks,
cfg_layout_merge_blocks): Added debugging.
* dbgcnt.c, dbgcnt.h: New files
* dce.c (delete_unmarked_insns): Use dbg_cnt.
-------------- next part --------------
A non-text attachment was scrubbed...
Name: incrscan3.diff
Type: text/x-patch
Size: 40181 bytes
Desc: not available
URL: <http://gcc.gnu.org/pipermail/gcc-patches/attachments/20061114/978fd22d/attachment.bin>
More information about the Gcc-patches
mailing list