diff options
author | Andrey Belevantsev <abel@ispras.ru> | 2016-03-15 18:42:07 +0300 |
---|---|---|
committer | Andrey Belevantsev <abel@gcc.gnu.org> | 2016-03-15 18:42:07 +0300 |
commit | 6598bb55e90fe000eee237d3e7eb7b70c6d5d205 (patch) | |
tree | 05575a387e521d2f8c625c43922daf99d64faba2 /gcc/sel-sched-ir.c | |
parent | 11a6609c191c4feae4b744944fa178b1e763c904 (diff) | |
download | gcc-6598bb55e90fe000eee237d3e7eb7b70c6d5d205.zip gcc-6598bb55e90fe000eee237d3e7eb7b70c6d5d205.tar.gz gcc-6598bb55e90fe000eee237d3e7eb7b70c6d5d205.tar.bz2 |
re PR rtl-optimization/69032 (ICE: in cfg_preds_1, at sel-sched-ir.c:4809 with -fsched-pressure -fsel-sched-pipelining -fselective-scheduling)
gcc/
PR rtl-optimization/69032
* sel-sched-ir.c (get_seqno_by_preds): Include both insn and head when
looping backwards over basic block insns.
testsuite/
PR rtl-optimization/69032
* gcc.dg/pr69032.c: New test.
From-SVN: r234219
Diffstat (limited to 'gcc/sel-sched-ir.c')
-rw-r--r-- | gcc/sel-sched-ir.c | 9 |
1 files changed, 6 insertions, 3 deletions
diff --git a/gcc/sel-sched-ir.c b/gcc/sel-sched-ir.c index 9507853..83f813a 100644 --- a/gcc/sel-sched-ir.c +++ b/gcc/sel-sched-ir.c @@ -4106,11 +4106,14 @@ get_seqno_by_preds (rtx_insn *insn) insn_t *preds; int n, i, seqno; - while (tmp != head) + /* Loop backwards from INSN to HEAD including both. */ + while (1) { - tmp = PREV_INSN (tmp); if (INSN_P (tmp)) - return INSN_SEQNO (tmp); + return INSN_SEQNO (tmp); + if (tmp == head) + break; + tmp = PREV_INSN (tmp); } cfg_preds (bb, &preds, &n); |