diff --git a/src/freedreno/ir3/ir3_shared_ra.c b/src/freedreno/ir3/ir3_shared_ra.c index 8bdc33a5e54..ace8e61d9b3 100644 --- a/src/freedreno/ir3/ir3_shared_ra.c +++ b/src/freedreno/ir3/ir3_shared_ra.c @@ -1429,9 +1429,13 @@ ir3_ra_shared(struct ir3_shader_variant *v, struct ir3_liveness **live_ptr) /* Recalculate liveness and register pressure now that additional values have * been added. * TODO we should only do this if any values have been spilled/reloaded. + * Note: since we don't have to recreate merge sets, we have to manually copy + * interval_offset to the new liveness struct. */ + unsigned interval_offset = live->interval_offset; void *live_mem_ctx = ralloc_parent(live); ralloc_free(live); *live_ptr = ir3_calc_liveness(live_mem_ctx, v->ir); + (*live_ptr)->interval_offset = interval_offset; }