From: Eric Anholt Date: Fri, 23 Sep 2011 20:52:47 +0000 (-0700) Subject: i965/vs: Fix access beyond array bounds for non-GRF operands. X-Git-Url: https://git.libre-soc.org/?a=commitdiff_plain;h=39790b6450b770cd402bc08b9416cab67de3dedb;p=mesa.git i965/vs: Fix access beyond array bounds for non-GRF operands. Caught by valgrind. I never saw a segfault from it (probably because it's hard to have much more of any other file than GRF). --- diff --git a/src/mesa/drivers/dri/i965/brw_vec4_copy_propagation.cpp b/src/mesa/drivers/dri/i965/brw_vec4_copy_propagation.cpp index e0b2d2abf2b..a5f6f93879a 100644 --- a/src/mesa/drivers/dri/i965/brw_vec4_copy_propagation.cpp +++ b/src/mesa/drivers/dri/i965/brw_vec4_copy_propagation.cpp @@ -241,9 +241,6 @@ vec4_visitor::opt_copy_propagation() * optimizing out access to the copy result */ for (int i = 2; i >= 0; i--) { - int reg = (virtual_grf_reg_map[inst->src[i].reg] + - inst->src[i].reg_offset); - /* Copied values end up in GRFs, and we don't track reladdr * accesses. */ @@ -251,6 +248,9 @@ vec4_visitor::opt_copy_propagation() inst->src[i].reladdr) continue; + int reg = (virtual_grf_reg_map[inst->src[i].reg] + + inst->src[i].reg_offset); + /* Find the regs that each swizzle component came from. */ src_reg *values[4];