summaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/util/register_allocate.c6
1 files changed, 5 insertions, 1 deletions
diff --git a/src/util/register_allocate.c b/src/util/register_allocate.c
index 727c0c205fe..9493f578dba 100644
--- a/src/util/register_allocate.c
+++ b/src/util/register_allocate.c
@@ -524,7 +524,11 @@ ra_simplify(struct ra_graph *g)
g->stack_count++;
BITSET_SET(g->in_stack, i);
progress = true;
- } else {
+ } else if (!progress) {
+ /* We only need to do this if we haven't made progress. If we
+ * have made progress, we'll throw the data away and loop again
+ * anyway.
+ */
unsigned int new_q_total = g->nodes[i].q_total;
if (new_q_total < lowest_q_total) {
best_optimistic_node = i;