When executing this program, simplifying its runtime checks leads to an infinite loop in the frontend when Logic.simplify(Logic.Disjunction(conditions.toSet)) is called.
// Get all checks (grouped by their location) and simplify their conditions
val collectedChecks = mutable.ListBuffer[RuntimeCheck]()
for ((loc, locChecks) <- checks)
for ((check, conditions) <- locChecks) {
val simplified = Logic.simplify(Logic.Disjunction(conditions.toSet))
val condition = convertDisjunction(simplified)
The particular condition that triggers this loop is cVal == c->val
When executing this program, simplifying its runtime checks leads to an infinite loop in the frontend when
Logic.simplify(Logic.Disjunction(conditions.toSet))
is called.The particular condition that triggers this loop is
cVal == c->val