From da7f4b5ada922f62e46d4bd9cc07222a228643ff Mon Sep 17 00:00:00 2001 From: Jason Ekstrand Date: Tue, 22 Sep 2020 16:56:42 -0500 Subject: [PATCH] nir/liveness: Consider if uses in nir_ssa_defs_interfere Fixes: f86902e75d9 "nir: Add an SSA-based liveness analysis pass" Closes: https://gitlab.freedesktop.org/mesa/mesa/-/issues/3428 Reviewed-by: Eric Anholt Reviewed-by: Yevhenii Kharchenko Reviewed-by: Connor Abbott Part-of: (cherry picked from commit 0206fb39418786e069088c513bf392d564d3d0f9) --- .pick_status.json | 2 +- src/compiler/nir/nir_liveness.c | 9 +++++++++ 2 files changed, 10 insertions(+), 1 deletion(-) diff --git a/.pick_status.json b/.pick_status.json index 78ec2b91f4c..24361ca41d6 100644 --- a/.pick_status.json +++ b/.pick_status.json @@ -1273,7 +1273,7 @@ "description": "nir/liveness: Consider if uses in nir_ssa_defs_interfere", "nominated": true, "nomination_type": 1, - "resolution": 0, + "resolution": 1, "master_sha": null, "because_sha": "f86902e75d989b781be36ced5dc98dfc0cd34b7b" }, diff --git a/src/compiler/nir/nir_liveness.c b/src/compiler/nir/nir_liveness.c index 16dbeb4a223..c3c181b3263 100644 --- a/src/compiler/nir/nir_liveness.c +++ b/src/compiler/nir/nir_liveness.c @@ -250,6 +250,15 @@ search_for_use_after_instr(nir_instr *start, nir_ssa_def *def) return true; node = node->next; } + + /* If uses are considered to be in the block immediately preceding the if + * so we need to also check the following if condition, if any. + */ + nir_if *following_if = nir_block_get_following_if(start->block); + if (following_if && following_if->condition.is_ssa && + following_if->condition.ssa == def) + return true; + return false; }