summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorEric Anholt <[email protected]>2011-09-23 13:52:47 -0700
committerEric Anholt <[email protected]>2011-09-26 15:33:42 -0700
commit39790b6450b770cd402bc08b9416cab67de3dedb (patch)
tree121cd4ee45e5ae8b31ba617d3d3c93a05d9619e0
parent8004a1cb95b8a195f3f4bbaa8d39d2f3297167de (diff)
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).
-rw-r--r--src/mesa/drivers/dri/i965/brw_vec4_copy_propagation.cpp6
1 files changed, 3 insertions, 3 deletions
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];