diff options
author | abel <abel@138bc75d-0d04-0410-961f-82ee72b054a4> | 2016-03-15 15:42:07 +0000 |
---|---|---|
committer | abel <abel@138bc75d-0d04-0410-961f-82ee72b054a4> | 2016-03-15 15:42:07 +0000 |
commit | 738eb905e8e8bcefad9bc4c80e299773cfd8182c (patch) | |
tree | 05575a387e521d2f8c625c43922daf99d64faba2 /gcc/sel-sched-ir.c | |
parent | 8d811ff91f608a477fbf87362b6eae8763157a90 (diff) | |
download | gcc-738eb905e8e8bcefad9bc4c80e299773cfd8182c.tar.gz |
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.
git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@234219 138bc75d-0d04-0410-961f-82ee72b054a4
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 9507853ba42..83f813aa571 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); |