This is just a testing hack in case someone runs into infinite loops
with model schedule change. I did run into quite a few during the course
of development and instead of sched trace files eating up the disk,
better to ICE and abort.
gcc/ChangeLog:
* haifa-sched.cc (model_promote_predecessors): Add infinite
looping checks.
Signed-off-by: Vineet Gupta <[email protected]>
---
gcc/haifa-sched.cc | 13 +++++++++++++
1 file changed, 13 insertions(+)
diff --git a/gcc/haifa-sched.cc b/gcc/haifa-sched.cc
index 67f99ce00339..471f7c686e9d 100644
--- a/gcc/haifa-sched.cc
+++ b/gcc/haifa-sched.cc
@@ -3714,6 +3714,18 @@ model_promote_predecessors (struct model_insn_info *insn)
struct model_insn_info *pro, *first, *leaf_true_dep = NULL;
sd_iterator_def sd_it;
dep_t dep;
+ int lockup_local_count = 0;
+ static int lockup_inter_insn, lockup_inter_count;
+
+ if (lockup_inter_insn == insn->insn->u2.insn_uid)
+ {
+ gcc_assert (lockup_inter_count++ < 1000);
+ }
+ else
+ {
+ lockup_inter_insn = insn->insn->u2.insn_uid;
+ lockup_inter_count = 0;
+ }
if (sched_verbose >= 7)
fprintf (sched_dump, ";;\t+--- priority of %d = %d, priority of",
@@ -3765,6 +3777,7 @@ model_promote_predecessors (struct model_insn_info *insn)
}
}
}
+ gcc_assert (++lockup_local_count < 10000);
if (!first)
break;
insn = first;
--
2.43.0