I'm not a huge fan of calling copy-prop here but I also don't see an easy way around it.
Reviewed-by: Jason Ekstrand <ja...@jlekstrand.net> On Mon, Aug 27, 2018 at 4:09 AM Timothy Arceri <tarc...@itsqueeze.com> wrote: > Now that SSA values can be derefs and they have special rules, we have > to be a bit more careful about our LCSSA phis. In particular, we need > to clean up in case LCSSA ended up creating a phi node for a deref. > This avoids validation issues with some CTS tests with the following > patch, but its possible this we could also see the same problem with > the existing unrolling passes. > --- > src/compiler/nir/nir_opt_loop_unroll.c | 10 +++++++++- > 1 file changed, 9 insertions(+), 1 deletion(-) > > diff --git a/src/compiler/nir/nir_opt_loop_unroll.c > b/src/compiler/nir/nir_opt_loop_unroll.c > index a1ad0e59814..e0e0b754716 100644 > --- a/src/compiler/nir/nir_opt_loop_unroll.c > +++ b/src/compiler/nir/nir_opt_loop_unroll.c > @@ -575,9 +575,17 @@ nir_opt_loop_unroll_impl(nir_function_impl *impl, > &has_nested_loop); > } > > - if (progress) > + if (progress) { > nir_lower_regs_to_ssa_impl(impl); > > + /* Calling nir_convert_loop_to_lcssa() adds extra phi nodes which > may > + * not be valid if they're used for something such as a deref. > + * Remove any unneeded phis. > + */ > + nir_copy_prop(impl->function->shader); > + nir_opt_remove_phis_impl(impl); > + } > + > return progress; > } > > -- > 2.17.1 > > _______________________________________________ > mesa-dev mailing list > mesa-dev@lists.freedesktop.org > https://lists.freedesktop.org/mailman/listinfo/mesa-dev >
_______________________________________________ mesa-dev mailing list mesa-dev@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/mesa-dev