nir/scheduler: Move nir_scheduler to its own header
[mesa.git] / src / compiler / nir / nir_opt_move.c
index 18c549804d03edbad60e43d50a615c73eda361a7..8abdaf364f55d35ddce4be55fc6a6bf50269e461 100644 (file)
@@ -152,13 +152,19 @@ nir_opt_move(nir_shader *shader, nir_move_options options)
       if (!func->impl)
          continue;
 
+      bool impl_progress = false;
       nir_foreach_block(block, func->impl) {
-         if (move(block, options)) {
-            nir_metadata_preserve(func->impl, nir_metadata_block_index |
-                                              nir_metadata_dominance |
-                                              nir_metadata_live_ssa_defs);
-            progress = true;
-         }
+         if (move(block, options))
+            impl_progress = true;
+      }
+
+      if (impl_progress) {
+         nir_metadata_preserve(func->impl, nir_metadata_block_index |
+                                           nir_metadata_dominance |
+                                           nir_metadata_live_ssa_defs);
+         progress = true;
+      } else {
+         nir_metadata_preserve(func->impl, nir_metadata_all);
       }
    }