diff options
author | Eric Anholt <[email protected]> | 2010-07-29 15:49:14 -0700 |
---|---|---|
committer | Eric Anholt <[email protected]> | 2010-07-29 15:56:17 -0700 |
commit | 0cf545ec696ab450c3f5ee65d7a0c2a5d9dca409 (patch) | |
tree | 4333aa9913ce7f21811bc8a2dd82b1ad8d1404ce /src/glsl/glcpp/pp.c | |
parent | a62ef12ef242ecd48887df2aa2052d2ecb0979f7 (diff) |
glsl2: Do ir_if_return on the way out, not the way in.
The problem with doing it on the way in is that for a function with
multiple early returns, we'll move an outer block in, then restart the
pass, then move the two inside returns out, then never move outer
blocks in again because the remaining early returns are inside an else
block and they don't know that there's a return just after their
block. By going inside-out, we get the early returns stacked up so
that they all move out with a series of
move_returns_after_block().
Fixes (on i965):
glsl-fs-raytrace-bug27060
glsl-vs-raytrace-bug26691
Diffstat (limited to 'src/glsl/glcpp/pp.c')
0 files changed, 0 insertions, 0 deletions