diff options
author | Alexander Monakov <amonakov@ispras.ru> | 2010-01-14 13:46:57 +0300 |
---|---|---|
committer | Alexander Monakov <amonakov@gcc.gnu.org> | 2010-01-14 13:46:57 +0300 |
commit | 14f30b877fe018475154a6e4d8979bc57528232d (patch) | |
tree | c509501241a054bccf98517dd21d44b196485b7b /gcc/sel-sched.c | |
parent | 8ec4d0ada31aee6ee23b4ed7f234171f6639c0dd (diff) | |
download | gcc-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.c | 9 |
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; |