freedreno/ir3: keep array stores
authorRob Clark <robdclark@gmail.com>
Mon, 29 Jan 2018 20:58:49 +0000 (15:58 -0500)
committerRob Clark <robdclark@gmail.com>
Sat, 10 Feb 2018 19:54:58 +0000 (14:54 -0500)
Since these are not in SSA form, add to block's keeps so it doesn't
appear unused.

Signed-off-by: Rob Clark <robdclark@gmail.com>
src/gallium/drivers/freedreno/ir3/ir3_compiler_nir.c

index 23888770fbe4208d2f9bf9f8cd455b58390e4cb9..c043214fca54ad6bd61c53840463b8022cdae766 100644 (file)
@@ -374,6 +374,12 @@ create_array_store(struct ir3_context *ctx, struct ir3_array *arr, int n,
 
        arr->last_write = mov;
 
+       /* the array store may only matter to something in an earlier
+        * block (ie. loops), but since arrays are not in SSA, depth
+        * pass won't know this.. so keep all array stores:
+        */
+       array_insert(block, block->keeps, mov);
+
        return mov;
 }