From: Kenneth Graunke Date: Sat, 10 Aug 2013 01:39:07 +0000 (-0700) Subject: i965/fs: Fully recompute liveout at each step. X-Git-Url: https://git.libre-soc.org/?a=commitdiff_plain;h=70b02a7facf88d5f17655be5e17f053d8531a278;p=mesa.git 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 Reviewed-by: Paul Berry --- 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])