Mesa (master): i965: Update if_block/ else_block in the dead control flow pass.

Kenneth Graunke kwg at kemper.freedesktop.org
Fri Sep 5 17:01:39 UTC 2014


Module: Mesa
Branch: master
Commit: 88d673bde685b07cf68829f54c5d5d4e28ba7c4e
URL:    http://cgit.freedesktop.org/mesa/mesa/commit/?id=88d673bde685b07cf68829f54c5d5d4e28ba7c4e

Author: Matt Turner <mattst88 at gmail.com>
Date:   Tue Sep  2 21:34:12 2014 -0700

i965: Update if_block/else_block in the dead control flow pass.

I think this bug crept in only recently.

Reviewed-by: Kenneth Graunke <kenneth at whitecape.org>

---

 src/mesa/drivers/dri/i965/brw_dead_control_flow.cpp |    7 +++++++
 1 file changed, 7 insertions(+)

diff --git a/src/mesa/drivers/dri/i965/brw_dead_control_flow.cpp b/src/mesa/drivers/dri/i965/brw_dead_control_flow.cpp
index 56884e6..7a302da 100644
--- a/src/mesa/drivers/dri/i965/brw_dead_control_flow.cpp
+++ b/src/mesa/drivers/dri/i965/brw_dead_control_flow.cpp
@@ -103,6 +103,13 @@ dead_control_flow_eliminate(backend_visitor *v)
          if (earlier_block && earlier_block->can_combine_with(later_block)) {
             earlier_block->combine_with(later_block);
 
+            foreach_block (block, v->cfg) {
+               if (block->if_block == later_block)
+                  block->if_block = earlier_block;
+               if (block->else_block == later_block)
+                  block->else_block = earlier_block;
+            }
+
             /* If ENDIF was in its own block, then we've now deleted it and
              * merged the two surrounding blocks, the latter of which the
              * __next block pointer was pointing to.




More information about the mesa-commit mailing list