glsl/dead_builin_varyings: Fix gl_FragData array lowering
authorIago Toral Quiroga <itoral@igalia.com>
Fri, 27 Nov 2015 11:46:20 +0000 (12:46 +0100)
committerIago Toral Quiroga <itoral@igalia.com>
Tue, 1 Dec 2015 07:30:52 +0000 (08:30 +0100)
commit750393ff7d6162372f368f5ed726b23f4cae49a0
tree31157762cd169a9284cf584b4b3f24391231e65e
parent4f347225752b48f3dc5a59a6be71fe78616252a7
glsl/dead_builin_varyings: Fix gl_FragData array lowering

The current implementation looks for array dereferences on gl_FragData and
immediately proceeds to lower them, however this is not enough because we
can have array access on vector variables too, like in this code:

out vec4 color;
void main()
{
   int i;
   for (i = 0; i < 4; i++)
      color[i] = 1.0;
}

Fix it by making sure that the actual variable being dereferenced is an array.

Fixes a crash in:
spec/arb_gpu_shader_fp64/execution/built-in-functions/fs-ldexp-dvec4.shader_test

Reviewed-by: Tapani Pälli <tapani.palli@intel.com>
src/glsl/opt_dead_builtin_varyings.cpp