aboutsummaryrefslogtreecommitdiff
path: root/gcc/sel-sched.c
diff options
context:
space:
mode:
authorAlexander Monakov <amonakov@ispras.ru>2010-01-14 13:46:57 +0300
committerAlexander Monakov <amonakov@gcc.gnu.org>2010-01-14 13:46:57 +0300
commit14f30b877fe018475154a6e4d8979bc57528232d (patch)
treec509501241a054bccf98517dd21d44b196485b7b /gcc/sel-sched.c
parent8ec4d0ada31aee6ee23b4ed7f234171f6639c0dd (diff)
downloadgcc-14f30b877fe018475154a6e4d8979bc57528232d.zip
gcc-14f30b877fe018475154a6e4d8979bc57528232d.tar.gz
gcc-14f30b877fe018475154a6e4d8979bc57528232d.tar.bz2
re PR rtl-optimization/42294 (ICE in code_motion_path_driver for 416.gamess)
2010-01-14 Alexander Monakov <amonakov@ispras.ru> PR rtl-optimization/42294 * sel-sched-ir.h (struct _sel_insn_data): Update comment. * sel-sched.c (move_exprs_to_boundary): Transitively add all originators' originators. * gfortran.dg/pr42294.f: New. From-SVN: r155893
Diffstat (limited to 'gcc/sel-sched.c')
-rw-r--r--gcc/sel-sched.c9
1 files changed, 9 insertions, 0 deletions
diff --git a/gcc/sel-sched.c b/gcc/sel-sched.c
index 4ca8ab2..1ec2eeb 100644
--- a/gcc/sel-sched.c
+++ b/gcc/sel-sched.c
@@ -5208,12 +5208,21 @@ move_exprs_to_boundary (bnd_t bnd, expr_t expr_vliw,
EXECUTE_IF_SET_IN_BITMAP (current_copies, 0, book_uid, bi)
{
+ unsigned uid;
+ bitmap_iterator bi;
+
/* We allocate these bitmaps lazily. */
if (! INSN_ORIGINATORS_BY_UID (book_uid))
INSN_ORIGINATORS_BY_UID (book_uid) = BITMAP_ALLOC (NULL);
bitmap_copy (INSN_ORIGINATORS_BY_UID (book_uid),
current_originators);
+
+ /* Transitively add all originators' originators. */
+ EXECUTE_IF_SET_IN_BITMAP (current_originators, 0, uid, bi)
+ if (INSN_ORIGINATORS_BY_UID (uid))
+ bitmap_ior_into (INSN_ORIGINATORS_BY_UID (book_uid),
+ INSN_ORIGINATORS_BY_UID (uid));
}
return should_move;