nir: call nir_metadata_preserve in nir_lower_memory_model
authorRhys Perry <pendingchaos02@gmail.com>
Thu, 14 Apr 2022 15:26:45 +0000 (16:26 +0100)
committerMarge Bot <emma+marge@anholt.net>
Thu, 19 May 2022 13:37:20 +0000 (13:37 +0000)
Signed-off-by: Rhys Perry <pendingchaos02@gmail.com>
Reviewed-by: Samuel Pitoiset <samuel.pitoiset@gmail.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/12448>

src/compiler/nir/nir_lower_memory_model.c

index eb16eb9..8180f5e 100644 (file)
@@ -274,7 +274,8 @@ nir_lower_memory_model(nir_shader *shader)
 {
    bool progress = false;
 
-   struct exec_list *cf_list = &nir_shader_get_entrypoint(shader)->body;
+   nir_function_impl *impl = nir_shader_get_entrypoint(shader);
+   struct exec_list *cf_list = &impl->body;
 
    uint32_t modes = 0;
    foreach_list_typed(nir_cf_node, cf_node, node, cf_list)
@@ -284,5 +285,10 @@ nir_lower_memory_model(nir_shader *shader)
    foreach_list_typed_reverse(nir_cf_node, cf_node, node, cf_list)
       progress |= lower_make_available(cf_node, &modes);
 
+   if (progress)
+      nir_metadata_preserve(impl, nir_metadata_block_index | nir_metadata_dominance);
+   else
+      nir_metadata_preserve(impl, nir_metadata_all);
+
    return progress;
 }