summaryrefslogtreecommitdiff
path: root/gcc/sel-sched-ir.c
diff options
context:
space:
mode:
authorabel <abel@138bc75d-0d04-0410-961f-82ee72b054a4>2016-03-15 15:42:07 +0000
committerabel <abel@138bc75d-0d04-0410-961f-82ee72b054a4>2016-03-15 15:42:07 +0000
commit738eb905e8e8bcefad9bc4c80e299773cfd8182c (patch)
tree05575a387e521d2f8c625c43922daf99d64faba2 /gcc/sel-sched-ir.c
parent8d811ff91f608a477fbf87362b6eae8763157a90 (diff)
downloadgcc-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.c9
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);