When considering assignment expressions like:
v.x += u.x;
v.x += u.x;
the vectorizer would incorrectly keep going, attempting to find more instructions to vectorize. It would overwrite the saved assignment to point at the second one, and increment channels a second time, resulting in try_vectorize thinking the expression was a vec2 instead of a float.
Instead, if we see a repeated assignment to a channel, just try to
vectorize everything we've found so far. This clears the saved state so it will start over.
Fixes Piglit's repeated-channel-assignments.vert.
Cc: "10.1"
ae2a03b glsl: Try vectorizing when seeing a repeated assignment to a channel.
src/glsl/opt_vectorize.cpp | 1 +
1 file changed, 1 insertion(+)
Upstream: cgit.freedesktop.org