From: Brian Paul Date: Thu, 13 Oct 2011 14:35:19 +0000 (-0600) Subject: st/mesa: kill instruction if writemask=0 in eliminate_dead_code_advanced() X-Git-Url: https://git.libre-soc.org/?a=commitdiff_plain;h=a9e5528f09a835b66771ba4d3f08ff7fd51e08a6;p=mesa.git st/mesa: kill instruction if writemask=0 in eliminate_dead_code_advanced() This fixes a bug where we'd wind up emitting an invalid instruction like MOVE R[0]., R[1]; - note the empty/zero writemask. If we don't write to any dest register channels, cull the instruction. v2: simply change/fix the existing test for instruction culling. --- diff --git a/src/mesa/state_tracker/st_glsl_to_tgsi.cpp b/src/mesa/state_tracker/st_glsl_to_tgsi.cpp index fe65ae53941..9cc56872536 100644 --- a/src/mesa/state_tracker/st_glsl_to_tgsi.cpp +++ b/src/mesa/state_tracker/st_glsl_to_tgsi.cpp @@ -3772,7 +3772,7 @@ glsl_to_tgsi_visitor::eliminate_dead_code_advanced(void) if (!inst->dead_mask || !inst->dst.writemask) continue; - else if (inst->dead_mask == inst->dst.writemask) { + else if ((inst->dst.writemask & ~inst->dead_mask) == 0) { iter.remove(); delete inst; removed++;