Module: Mesa Branch: master Commit: 3e248e0418370373ac5bcee4b0a88b501b5b22a9 URL: http://cgit.freedesktop.org/mesa/mesa/commit/?id=3e248e0418370373ac5bcee4b0a88b501b5b22a9
Author: Matt Turner <[email protected]> Date: Sun Aug 31 11:07:58 2014 -0700 i965/fs: Connect cfg properly in predicated break peephole. If the ENDIF instruction was the only instruction in its block, we'd leave the successors of the merged if+jump block in a bad state. Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=83080 Reviewed-by: Kenneth Graunke <[email protected]> --- .../drivers/dri/i965/brw_fs_peephole_predicated_break.cpp | 13 +++++++++---- 1 file changed, 9 insertions(+), 4 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 ab197ee..eb99681 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 @@ -87,13 +87,18 @@ fs_visitor::opt_peephole_predicated_break() } if_inst->remove(if_block); + + bblock_t *later_block = endif_block; + if (endif_block->start_ip == endif_block->end_ip) { + later_block = (bblock_t *)endif_block->link.next; + } endif_inst->remove(endif_block); - if_block->children.make_empty(); - endif_block->parents.make_empty(); + earlier_block->children.make_empty(); + later_block->parents.make_empty(); - if_block->add_successor(cfg->mem_ctx, jump_block); - jump_block->add_successor(cfg->mem_ctx, endif_block); + earlier_block->add_successor(cfg->mem_ctx, jump_block); + jump_block->add_successor(cfg->mem_ctx, later_block); if (earlier_block->can_combine_with(jump_block)) { earlier_block->combine_with(jump_block); _______________________________________________ mesa-commit mailing list [email protected] http://lists.freedesktop.org/mailman/listinfo/mesa-commit
