i965: Don't mark dead instructions' sources live.
authorMatt Turner <mattst88@gmail.com>
Thu, 26 Nov 2015 00:19:06 +0000 (16:19 -0800)
committerMatt Turner <mattst88@gmail.com>
Tue, 1 Dec 2015 22:48:55 +0000 (14:48 -0800)
Removes dead code from glsl-mat-from-int-ctor-03.shader_test.

Reported-by: Juan A. Suarez Romero <jasuarez@igalia.com>
Reviewed-by: Kenneth Graunke <kenneth@whitecape.org>
src/mesa/drivers/dri/i965/brw_fs_dead_code_eliminate.cpp
src/mesa/drivers/dri/i965/brw_vec4_dead_code_eliminate.cpp

index a50cf6f24f1b6b56d4821bbece179482ea711892..6b4b60224b74d3153073d73b89eb4689d5e25ca5 100644 (file)
@@ -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]);
index 58aed810fcda72b4967a7de38e1d6fc5d9f2f6c0..369941bb71e9f23a01dbbe866445a11adea0629a 100644 (file)
@@ -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++) {