r600g/sb: don't propagate dead values in GVN pass 14/6314/1
authorVadim Girlin <vadimgirlin@gmail.com>
Tue, 30 Apr 2013 16:50:24 +0000 (20:50 +0400)
committerVadim Girlin <vadimgirlin@gmail.com>
Tue, 30 Apr 2013 17:50:48 +0000 (21:50 +0400)
commit6ba7a162b6fb38e588784fa14426a61deca1143c
tree9d596f443fbfe8108c8ab4be13a8d19dd38b2be7
parent3e476c311f9e131d255a9946d0cf7acc74a07dad
r600g/sb: don't propagate dead values in GVN pass

In some cases we use value::gvn_source field to link values that
are known to be equal before gvn pass (e.g. results of DOT4 in different
slots of the same alu group), but then source value may become dead later
and this confuses further passes.

This patch resets value::gvn_source to NULL in the dce_cleanup pass
if it points to dead value.

Fixes segfault during shader optimization with ETQW.

Signed-off-by: Vadim Girlin <vadimgirlin@gmail.com>
src/gallium/drivers/r600/sb/sb_dce_cleanup.cpp