Mesa (main): nir/gcm: Clear out pass_flags before starting

GitLab Mirror gitlab-mirror at kemper.freedesktop.org
Wed Jul 21 14:48:27 UTC 2021


Module: Mesa
Branch: main
Commit: 436668874a1508edf127be16873c6811fe13a3e6
URL:    http://cgit.freedesktop.org/mesa/mesa/commit/?id=436668874a1508edf127be16873c6811fe13a3e6

Author: Ian Romanick <ian.d.romanick at intel.com>
Date:   Tue Jul 20 13:37:31 2021 -0700

nir/gcm: Clear out pass_flags before starting

With this pass enabled in Intel drivers, running shader-db on
shaders/unity/38.shader_test resulted in

Program received signal SIGSEGV, Segmentation fault.
gcm_schedule_early_src (src=0x555555d45348, void_state=0x7fffffffba40) at ../../SOURCE/master/src/compiler/nir/nir_opt_gcm.c:297
297	   if (info->early_block->index < src_info->early_block->index)
(gdb) print src_info->early_block
$1 = (nir_block *) 0x0

I tracked this down to an early exit from gcm_schedule_early_instr on
the parent instruction because instr->pass_flags was 0x1c.  That
should be an impossible value for this pass, so I inferred that
pass_flags must have dirt left from some previous pass.

Fixes: 8dfe6f672f4 ("nir/GCM: Use pass_flags instead of bitsets for tracking visited/pinned")

Reviewed-by: Timothy Arceri <tarceri at itsqueeze.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/597>

---

 src/compiler/nir/nir_opt_gcm.c | 5 +++++
 1 file changed, 5 insertions(+)

diff --git a/src/compiler/nir/nir_opt_gcm.c b/src/compiler/nir/nir_opt_gcm.c
index 891da57fe35..d6fd35f84c2 100644
--- a/src/compiler/nir/nir_opt_gcm.c
+++ b/src/compiler/nir/nir_opt_gcm.c
@@ -604,6 +604,11 @@ opt_gcm_impl(nir_function_impl *impl, bool value_number)
    nir_metadata_require(impl, nir_metadata_block_index |
                               nir_metadata_dominance);
 
+   /* A previous pass may have left pass_flags dirty, so clear it all out. */
+   nir_foreach_block(block, impl)
+      nir_foreach_instr(instr, block)
+         instr->pass_flags = 0;
+
    struct gcm_state state;
 
    state.impl = impl;



More information about the mesa-commit mailing list