[Mesa-dev] [PATCH 2/4] i965/fs: Wire up control flow correctly in predicated break pass.
Matt Turner
mattst88 at gmail.com
Wed Nov 5 16:13:57 PST 2014
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.
---
src/mesa/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)) {
--
2.0.4
More information about the mesa-dev
mailing list