diff options
author | revitale <revitale@138bc75d-0d04-0410-961f-82ee72b054a4> | 2007-08-28 06:52:16 +0000 |
---|---|---|
committer | revitale <revitale@138bc75d-0d04-0410-961f-82ee72b054a4> | 2007-08-28 06:52:16 +0000 |
commit | 7bfc9b7cc90d5fc45847f176852078b1ddd504b1 (patch) | |
tree | bc3b2739b170fd0d12aa9aeb627ced2e462e8b9d /gcc/ddg.c | |
parent | 3eae2dbf2fea429c07dd5d25a183193faf303175 (diff) | |
download | gcc-7bfc9b7cc90d5fc45847f176852078b1ddd504b1.tar.gz |
Modulo-scheduling improvements. Patch 2 of 2
git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@127848 138bc75d-0d04-0410-961f-82ee72b054a4
Diffstat (limited to 'gcc/ddg.c')
-rw-r--r-- | gcc/ddg.c | 10 |
1 files changed, 7 insertions, 3 deletions
diff --git a/gcc/ddg.c b/gcc/ddg.c index 295811db4c1..f1ec8fdb121 100644 --- a/gcc/ddg.c +++ b/gcc/ddg.c @@ -176,13 +176,17 @@ create_ddg_dep_from_intra_loop_link (ddg_ptr g, ddg_node_ptr src_node, rtx set; set = single_set (dest_node->insn); - if (set) + /* TODO: Handle registers that REG_P is not true for them, i.e. + subregs and special registers. */ + if (set && REG_P (SET_DEST (set))) { int regno = REGNO (SET_DEST (set)); - struct df_ref *first_def = - df_bb_regno_first_def_find (g->bb, regno); + struct df_ref *first_def; struct df_rd_bb_info *bb_info = DF_RD_BB_INFO (g->bb); + 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)) return; } |