Module: Mesa Branch: staging/19.2 Commit: 45ffa64086e73e986d49c4abcd20c21cba691b06 URL: http://cgit.freedesktop.org/mesa/mesa/commit/?id=45ffa64086e73e986d49c4abcd20c21cba691b06
Author: Rhys Perry <[email protected]> Date: Mon Sep 23 14:48:22 2019 +0100 nir/opt_remove_phis: handle phis with no sources This can happen with loops with unreachable exits which are later optimized away. Fixes assertion in dEQP-VK.graphicsfuzz.unreachable-loops with RADV. Cc: [email protected] Signed-off-by: Rhys Perry <[email protected]> Reviewed-by: Jason Ekstrand <[email protected]> (cherry picked from commit 12372d60fff676c458c7a54a934f619548337f0e) --- src/compiler/nir/nir_opt_remove_phis.c | 11 ++++++----- 1 file changed, 6 insertions(+), 5 deletions(-) diff --git a/src/compiler/nir/nir_opt_remove_phis.c b/src/compiler/nir/nir_opt_remove_phis.c index a3186116798..36e01ff7245 100644 --- a/src/compiler/nir/nir_opt_remove_phis.c +++ b/src/compiler/nir/nir_opt_remove_phis.c @@ -109,12 +109,13 @@ remove_phis_block(nir_block *block, nir_builder *b) if (!srcs_same) continue; - /* We must have found at least one definition, since there must be at - * least one forward edge. - */ - assert(def != NULL); + if (!def) { + /* In this case, the phi had no sources. So turn it into an undef. */ - if (mov) { + b->cursor = nir_after_phis(block); + def = nir_ssa_undef(b, phi->dest.ssa.num_components, + phi->dest.ssa.bit_size); + } else if (mov) { /* If the sources were all movs from the same source with the same * swizzle, then we can't just pick a random move because it may not * dominate the phi node. Instead, we need to emit our own move after _______________________________________________ mesa-commit mailing list [email protected] https://lists.freedesktop.org/mailman/listinfo/mesa-commit
