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

Reply via email to