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);