diff options
author | zadeck <zadeck@138bc75d-0d04-0410-961f-82ee72b054a4> | 2008-01-20 01:48:25 +0000 |
---|---|---|
committer | zadeck <zadeck@138bc75d-0d04-0410-961f-82ee72b054a4> | 2008-01-20 01:48:25 +0000 |
commit | 2e49e3bce41a772e383c119a06432fbaa8295f62 (patch) | |
tree | 586d89d9ceda6355a6a8d5fafc831147afd78ca0 /gcc/ddg.c | |
parent | 5c60e3f08160c05b2fc7b45322ee0a82e4ff65cf (diff) | |
download | gcc-2e49e3bce41a772e383c119a06432fbaa8295f62.tar.gz |
2008-01-19 Kenneth Zadeck <zadeck@naturalbridge.com>
PR rtl-optimization/26854
PR rtl-optimization/34400
* ddg.c (create_ddg_dep_from_intra_loop_link): Do not use
DF_RD->gen.
* df.h (df_changeable_flags.DF_RD_NO_TRIM): New.
(df_rd_bb_info.expanded_lr_out): New.
* loop_invariant.c (find_defs): Added DF_RD_NO_TRIM flag.
* loop_iv.c (iv_analysis_loop_init): Ditto.
* df-problems.c (df_rd_free_bb_info, df_rd_alloc, df_rd_confluence_n,
df_rd_bb_local_compute, df_rd_transfer_function, df_rd_free):
Added code to allocate, initialize or free expanded_lr_out.
(df_rd_bb_local_compute_process_def): Restructured to make
more understandable.
(df_rd_confluence_n): Add code to do nothing with fake edges and
code to no apply invalidate_by_call sets if the sets are being trimmed.
(df_lr_local_finalize): Renamed to df_lr_finalize.
(df_live_local_finalize): Renamed to df_live_finalize.
git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@131670 138bc75d-0d04-0410-961f-82ee72b054a4
Diffstat (limited to 'gcc/ddg.c')
-rw-r--r-- | gcc/ddg.c | 5 |
1 files changed, 3 insertions, 2 deletions
diff --git a/gcc/ddg.c b/gcc/ddg.c index 14b18745823..c67b6c24869 100644 --- a/gcc/ddg.c +++ b/gcc/ddg.c @@ -184,12 +184,13 @@ create_ddg_dep_from_intra_loop_link (ddg_ptr g, ddg_node_ptr src_node, { int regno = REGNO (SET_DEST (set)); struct df_ref *first_def; - struct df_rd_bb_info *bb_info = DF_RD_BB_INFO (g->bb); + struct df_ref *last_def; first_def = df_bb_regno_first_def_find (g->bb, regno); gcc_assert (first_def); - if (bitmap_bit_p (bb_info->gen, first_def->id)) + last_def = df_bb_regno_last_def_find (g->bb, regno); + if (first_def == last_def) return; } } |