nir: Just return when asked to rewrite uses of an SSA def to itself.
authorEric Anholt <eric@anholt.net>
Mon, 25 Feb 2019 19:22:10 +0000 (11:22 -0800)
committerEric Anholt <eric@anholt.net>
Mon, 25 Feb 2019 21:25:24 +0000 (21:25 +0000)
The nir_builder swizzling improvement to not emit extra MOVs resulted in
nir_lower_tex() trying to rewrite an SSA def to itself, triggering the
assert on all texturing in v3d.  There's no work to be done in this case,
so just stop asserting.

Fixes: 743700be1f58 ("nir/builder: Don't emit no-op swizzles")
Reviewed-by: Jason Ekstrand <jason@jlekstrand.net>
src/compiler/nir/nir.c

index 60e30ae1008edac72d6bb28c11823ade7df4f7b0..d759dfdce2101df9fe54b38606b453204f29e539 100644 (file)
@@ -1511,7 +1511,8 @@ void
 nir_ssa_def_rewrite_uses_after(nir_ssa_def *def, nir_src new_src,
                                nir_instr *after_me)
 {
-   assert(!new_src.is_ssa || def != new_src.ssa);
+   if (new_src.is_ssa && def == new_src.ssa)
+      return;
 
    nir_foreach_use_safe(use_src, def) {
       assert(use_src->parent_instr != def->parent_instr);