aboutsummaryrefslogtreecommitdiff
path: root/gcc/sel-sched-ir.c
diff options
context:
space:
mode:
authorAndrey Belevantsev <abel@ispras.ru>2016-03-15 18:42:07 +0300
committerAndrey Belevantsev <abel@gcc.gnu.org>2016-03-15 18:42:07 +0300
commit6598bb55e90fe000eee237d3e7eb7b70c6d5d205 (patch)
tree05575a387e521d2f8c625c43922daf99d64faba2 /gcc/sel-sched-ir.c
parent11a6609c191c4feae4b744944fa178b1e763c904 (diff)
downloadgcc-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.c9
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);