summaryrefslogtreecommitdiffstats
path: root/src/getopt
diff options
context:
space:
mode:
authorPaul Berry <[email protected]>2011-07-01 12:36:23 -0700
committerPaul Berry <[email protected]>2011-07-08 09:59:30 -0700
commit382cee91a4bbbee45897239e6802ccaa5a5ad9c3 (patch)
tree5db0a7b7fcaaf0d24b9c3e16424106e34bcd867b /src/getopt
parent03145ba655ad9173a74b853843eccaae78ff392f (diff)
glsl: Use foreach_list in lower_jumps.cpp
The visitor class in lower_jumps.cpp never removes or replaces the instruction being visited, but it frequently alters or removes the instructions that follow it. Therefore, to make sure the altered IR is visited, it needs to iterate through exec_lists using foreach_list rather than visit_exec_list(). Without this patch, lower_jumps.cpp may require multiple passes in order to lower all jumps. This results in sub-optimal output because lower_jumps.cpp produces a brand new set of temporary variables each time it is run, and the redundant temporary variables are not guaranteed to be eliminated by later optimization passes. Also, certain invariants assumed by lower_jumps.cpp may fail to hold, causing assertion failures. Fixes unit tests test_lower_pulled_out_jump, test_lower_unified_returns, test_lower_guarded_conditional_break, test_lower_return_non_void_at_end_of_loop, and test_lower_returns_3. Reviewed-by: Kenneth Graunke <[email protected]>
Diffstat (limited to 'src/getopt')
0 files changed, 0 insertions, 0 deletions