glsl: lower unconditional returns and continues in loops.
authorPaul Berry <stereotype441@gmail.com>
Sat, 2 Jul 2011 01:26:05 +0000 (18:26 -0700)
committerPaul Berry <stereotype441@gmail.com>
Fri, 8 Jul 2011 16:59:30 +0000 (09:59 -0700)
commit03145ba655ad9173a74b853843eccaae78ff392f
tree1cd0a4e3b1c689fb554a1cfc535364a4c605ae30
parentafc9a50fba39df520046019c6993d7b7559329ea
glsl: lower unconditional returns and continues in loops.

Previously, lower_jumps.cpp would only lower return and continue
statements that appeared inside conditionals.  This patch makes it
lower unconditional returns and continue statements that occur inside
a loop.

Such unconditional flow control statements would be unlikely to be
explicitly coded by a reasonable user, however they might arise as a
result of other optimizations.

Without this patch, lower_jumps.cpp might not lower certain return and
continue statements, causing some backends to fail.

Fixes unit tests test_lower_return_void_at_end_of_loop and
test_remove_continue_at_end_of_loop.
src/glsl/lower_jumps.cpp