nir: Only unlink sources that are actually valid
authorJason Ekstrand <jason.ekstrand@intel.com>
Wed, 9 Sep 2015 22:58:08 +0000 (15:58 -0700)
committerJason Ekstrand <jason.ekstrand@intel.com>
Fri, 11 Sep 2015 16:21:20 +0000 (09:21 -0700)
Reviewed-by: Thomas Helland <thomashelland90@gmail.com>
src/glsl/nir/nir.c

index 13489f0d38e7b5daba891c13ee820c030668d23b..4a88cd1837cdca62fcf636eeca22157aa6725c28 100644 (file)
@@ -716,10 +716,17 @@ nir_instr_insert(nir_cursor cursor, nir_instr *instr)
       nir_handle_add_jump(instr->block);
 }
 
+static bool
+src_is_valid(const nir_src *src)
+{
+   return src->is_ssa ? (src->ssa != NULL) : (src->reg.reg != NULL);
+}
+
 static bool
 remove_use_cb(nir_src *src, void *state)
 {
-   list_del(&src->use_link);
+   if (src_is_valid(src))
+      list_del(&src->use_link);
 
    return true;
 }
@@ -1102,12 +1109,6 @@ nir_srcs_equal(nir_src src1, nir_src src2)
    }
 }
 
-static bool
-src_is_valid(const nir_src *src)
-{
-   return src->is_ssa ? (src->ssa != NULL) : (src->reg.reg != NULL);
-}
-
 static void
 src_remove_all_uses(nir_src *src)
 {