[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