glsl: Fix variable_referenced() for vector_{extract,insert} expressions
authorIago Toral Quiroga <itoral@igalia.com>
Mon, 5 Oct 2015 09:42:43 +0000 (11:42 +0200)
committerIago Toral Quiroga <itoral@igalia.com>
Wed, 14 Oct 2015 06:08:12 +0000 (08:08 +0200)
commit9de651b261286f15ae000e4a698587b805b95d2b
tree574c599c2adf9b0b770f66e160d605be23f5a832
parentbaee16bf02eedc6a32381d79da6c7ac942f782ae
glsl: Fix variable_referenced() for vector_{extract,insert} expressions

We get these when we operate on vector variables with array accessors
(i.e. things like a[0] where 'a' is a vec4). When we call variable_referenced()
on these expressions we want to return a reference to 'a' instead of NULL.

This fixes a problem where we pass a[0] as the first argument to an atomic
SSBO function that expects a buffer variable. In order to check this, we use
variable_referenced(), but that is currently returning NULL in this case, since
the underlying rvalue is a vector_extract expression.

Tested-by: Markus Wick <markus@selfnet.de>
Reviewed-by: Kristian Høgsberg <krh@bitplanet.net>
src/glsl/ir.cpp
src/glsl/ir.h