diff options
author | Kenneth Graunke <[email protected]> | 2013-08-09 18:39:07 -0700 |
---|---|---|
committer | Kenneth Graunke <[email protected]> | 2013-08-19 11:29:24 -0700 |
commit | 70b02a7facf88d5f17655be5e17f053d8531a278 (patch) | |
tree | 6c625ddd909d71f8bcc461489461b6117841a8b5 | |
parent | d20b472d0a6b016e4827d0986a10df29277a3a5e (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.cpp | 2 |
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]) |