summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorKenneth Graunke <[email protected]>2013-08-09 18:39:07 -0700
committerKenneth Graunke <[email protected]>2013-08-19 11:29:24 -0700
commit70b02a7facf88d5f17655be5e17f053d8531a278 (patch)
tree6c625ddd909d71f8bcc461489461b6117841a8b5
parentd20b472d0a6b016e4827d0986a10df29277a3a5e (diff)
i965/fs: Fully recompute liveout at each step.
Since we start with an overestimation of livein (0xffffffff), successive steps can actually take away values. This means we can't simply OR in new liveout values; we need to recompute it from scratch at each iteration of the fixed-point algorithm. Signed-off-by: Kenneth Graunke <[email protected]> Reviewed-by: Paul Berry <[email protected]>
-rw-r--r--src/mesa/drivers/dri/i965/brw_fs_copy_propagation.cpp2
1 files changed, 1 insertions, 1 deletions
diff --git a/src/mesa/drivers/dri/i965/brw_fs_copy_propagation.cpp b/src/mesa/drivers/dri/i965/brw_fs_copy_propagation.cpp
index 7662f6a3656..90a3f4fbc0c 100644
--- a/src/mesa/drivers/dri/i965/brw_fs_copy_propagation.cpp
+++ b/src/mesa/drivers/dri/i965/brw_fs_copy_propagation.cpp
@@ -211,7 +211,7 @@ fs_copy_prop_dataflow::run()
for (int i = 0; i < bitset_words; i++) {
const BITSET_WORD old_liveout = bd[b].liveout[i];
- bd[b].liveout[i] |=
+ bd[b].liveout[i] =
bd[b].copy[i] | (bd[b].livein[i] & ~bd[b].kill[i]);
if (old_liveout != bd[b].liveout[i])