This fixes the bug for me, thanks, Tested-by: Gert Wollny <gw.foss...@gmail.com>
Am Montag, den 26.03.2018, 10:31 +1100 schrieb Timothy Arceri: > Just checking for 2 jumps is not enough to be sure we can do a > complex loop unroll. We need to make sure we also have also found > 2 loop terminators. > > Without this we were attempting to unroll a loop where the second > jump was nesed inside multiple ifs which loop analysis is unable > to detect as a terminator. We ended up splicing out the first > terminator but failed to actually unroll the loop, this resulted > in the creation of a possible infinite loop. > > Fixes: 646621c66da9 "glsl: make loop unrolling more like the nir > unrolling path" > > https://bugs.freedesktop.org/show_bug.cgi?id=105670 > --- > src/compiler/glsl/loop_unroll.cpp | 2 +-mesa-dev@lists.freedesktop.o > rg > 1 file changed, 1 insertion(+), 1 deletion(-) > > diff --git a/src/compiler/glsl/loop_unroll.cpp > b/src/compiler/glsl/loop_unroll.cpp > index 6e06a30fb91..f6efe6475a0 100644 > --- a/src/compiler/glsl/loop_unroll.cpp > +++ b/src/compiler/glsl/loop_unroll.cpp > @@ -519,7 +519,7 @@ loop_unroll_visitor::visit_leave(ir_loop *ir) > * isn't any additional unknown terminators, or any other jumps > nested > * inside futher ifs. > */ > - if (ls->num_loop_jumps != 2) > + if (ls->num_loop_jumps != 2 || ls->terminators.length() != 2) > return visit_continue; > > ir_instruction *first_ir = _______________________________________________ mesa-dev mailing list mesa-dev@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/mesa-dev