From 48b4e88d3d2cfa2ccd912184cfdcbe559cd36ff0 Mon Sep 17 00:00:00 2001 From: Matt Turner Date: Wed, 25 Nov 2015 16:19:06 -0800 Subject: [PATCH] i965: Don't mark dead instructions' sources live. Removes dead code from glsl-mat-from-int-ctor-03.shader_test. Reported-by: Juan A. Suarez Romero Reviewed-by: Kenneth Graunke --- src/mesa/drivers/dri/i965/brw_fs_dead_code_eliminate.cpp | 4 ++++ src/mesa/drivers/dri/i965/brw_vec4_dead_code_eliminate.cpp | 4 ++++ 2 files changed, 8 insertions(+) diff --git a/src/mesa/drivers/dri/i965/brw_fs_dead_code_eliminate.cpp b/src/mesa/drivers/dri/i965/brw_fs_dead_code_eliminate.cpp index a50cf6f..6b4b602 100644 --- a/src/mesa/drivers/dri/i965/brw_fs_dead_code_eliminate.cpp +++ b/src/mesa/drivers/dri/i965/brw_fs_dead_code_eliminate.cpp @@ -109,6 +109,10 @@ fs_visitor::dead_code_eliminate() BITSET_CLEAR(flag_live, inst->flag_subreg); } + /* Don't mark dead instructions' sources as live */ + if (inst->opcode == BRW_OPCODE_NOP) + continue; + for (int i = 0; i < inst->sources; i++) { if (inst->src[i].file == VGRF) { int var = live_intervals->var_from_reg(inst->src[i]); diff --git a/src/mesa/drivers/dri/i965/brw_vec4_dead_code_eliminate.cpp b/src/mesa/drivers/dri/i965/brw_vec4_dead_code_eliminate.cpp index 58aed81..369941b 100644 --- a/src/mesa/drivers/dri/i965/brw_vec4_dead_code_eliminate.cpp +++ b/src/mesa/drivers/dri/i965/brw_vec4_dead_code_eliminate.cpp @@ -150,6 +150,10 @@ vec4_visitor::dead_code_eliminate() BITSET_CLEAR(flag_live, c); } + /* Don't mark dead instructions' sources as live */ + if (inst->opcode == BRW_OPCODE_NOP) + continue; + for (int i = 0; i < 3; i++) { if (inst->src[i].file == VGRF) { for (unsigned j = 0; j < inst->regs_read(i); j++) { -- 2.7.4