diff options
author | Mircea Namolaru <namolaru@il.ibm.com> | 2007-08-28 06:52:16 +0000 |
---|---|---|
committer | Revital Eres <revitale@gcc.gnu.org> | 2007-08-28 06:52:16 +0000 |
commit | 46dc0789fed233da1561e6c2ee1a4a7ab82e9fd4 (patch) | |
tree | bc3b2739b170fd0d12aa9aeb627ced2e462e8b9d /gcc/ddg.c | |
parent | 7368348cb7d8665e6eb213264d6ca056f2f05219 (diff) | |
download | gcc-46dc0789fed233da1561e6c2ee1a4a7ab82e9fd4.tar.gz |
Modulo-scheduling improvements. Patch 2 of 2
Co-Authored-By: Andrey Belevantsev <abel@ispras.ru>
Co-Authored-By: Revital Eres <eres@il.ibm.com>
Co-Authored-By: Vladimir Yanovsky <yanov@il.ibm.com>
From-SVN: r127848
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; } |