mirror of
https://gitlab.freedesktop.org/mesa/mesa.git
synced 2026-01-03 18:00:10 +01:00
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: 8dfe6f672f ("nir/GCM: Use pass_flags instead of bitsets for tracking visited/pinned")
Reviewed-by: Timothy Arceri <tarceri@itsqueeze.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/597>
This commit is contained in:
parent
3ab74d0ffa
commit
436668874a
1 changed files with 5 additions and 0 deletions
|
|
@ -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;
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue