Mesa (master): glsl/opt_cpe: Fix a crash when a kill kills for two reasons.

Eric Anholt anholt at kemper.freedesktop.org
Wed Apr 13 10:53:41 PDT 2011


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

Author: Eric Anholt <eric at anholt.net>
Date:   Fri Apr  8 07:54:50 2011 -1000

glsl/opt_cpe: Fix a crash when a kill kills for two reasons.

Fixes glsl-copy-propagation-loop-2 when this optimization pass is
re-enabled.

Reported-by: David Lamparter <equinox at diac24.net>

---

 src/glsl/opt_copy_propagation_elements.cpp |    4 +++-
 1 files changed, 3 insertions(+), 1 deletions(-)

diff --git a/src/glsl/opt_copy_propagation_elements.cpp b/src/glsl/opt_copy_propagation_elements.cpp
index 1ffbd4d..a91e624 100644
--- a/src/glsl/opt_copy_propagation_elements.cpp
+++ b/src/glsl/opt_copy_propagation_elements.cpp
@@ -390,8 +390,10 @@ ir_copy_propagation_elements_visitor::kill(kill_entry *k)
 
       if (entry->lhs == k->var) {
 	 entry->write_mask = entry->write_mask & ~k->write_mask;
-	 if (entry->write_mask == 0)
+	 if (entry->write_mask == 0) {
 	    entry->remove();
+	    continue;
+	 }
       }
       if (entry->rhs == k->var) {
 	 entry->remove();



More information about the mesa-commit mailing list