diff --git a/src/gallium/drivers/r600/sfn/sfn_optimizer.cpp b/src/gallium/drivers/r600/sfn/sfn_optimizer.cpp index 31b43069877d37826dc47773ffe66720079dc216..db0dde7a20602590b6706f368d97d9fdc7d9cb09 100644 --- a/src/gallium/drivers/r600/sfn/sfn_optimizer.cpp +++ b/src/gallium/drivers/r600/sfn/sfn_optimizer.cpp @@ -360,7 +360,12 @@ CopyPropFwdVisitor::visit(AluInstr *instr) auto src = instr->psrc(0); auto dest = instr->dest(); - for (auto& i : dest->uses()) { + auto ii = dest->uses().begin(); + auto ie = dest->uses().end(); + + while(ii != ie) { + auto i = *ii; + ++ii; /* SSA can always be propagated, registers only in the same block * and only if they are assigned in the same block */ bool can_propagate = dest->has_flag(Register::ssa);