Module: Mesa Branch: master Commit: 58a54091a96566a7e18c984b4587e0e1d1ee3e9d URL: http://cgit.freedesktop.org/mesa/mesa/commit/?id=58a54091a96566a7e18c984b4587e0e1d1ee3e9d
Author: Matt Turner <[email protected]> Date: Wed Nov 5 15:23:05 2014 -0800 i965/fs: Wire up control flow correctly in predicated break pass. When the earlier block ended with control flow, we'd mistakenly remove some of its links to its children. The same happened with the later block. Acked-by: Jason Ekstrand <[email protected]> --- .../drivers/dri/i965/brw_fs_peephole_predicated_break.cpp | 10 +++++++--- 1 file changed, 7 insertions(+), 3 deletions(-) diff --git a/src/mesa/drivers/dri/i965/brw_fs_peephole_predicated_break.cpp b/src/mesa/drivers/dri/i965/brw_fs_peephole_predicated_break.cpp index b7a1d7e..047c2c0 100644 --- a/src/mesa/drivers/dri/i965/brw_fs_peephole_predicated_break.cpp +++ b/src/mesa/drivers/dri/i965/brw_fs_peephole_predicated_break.cpp @@ -107,10 +107,14 @@ fs_visitor::opt_peephole_predicated_break() } endif_inst->remove(endif_block); - earlier_block->children.make_empty(); - later_block->parents.make_empty(); + if (!earlier_block->ends_with_control_flow()) { + earlier_block->children.make_empty(); + earlier_block->add_successor(cfg->mem_ctx, jump_block); + } - earlier_block->add_successor(cfg->mem_ctx, jump_block); + if (!later_block->starts_with_control_flow()) { + later_block->parents.make_empty(); + } jump_block->add_successor(cfg->mem_ctx, later_block); if (earlier_block->can_combine_with(jump_block)) { _______________________________________________ mesa-commit mailing list [email protected] http://lists.freedesktop.org/mailman/listinfo/mesa-commit
