summaryrefslogtreecommitdiffstats
path: root/src/compiler/spirv/vtn_alu.c
diff options
context:
space:
mode:
authorKenneth Graunke <[email protected]>2016-11-12 11:27:17 -0800
committerKenneth Graunke <[email protected]>2016-11-12 22:08:15 -0800
commit9c676a64273f32c7fb3f2b6973399af1d7f24d46 (patch)
tree45b0f1920e63551e2d4c1e6512b10943bc6b27f2 /src/compiler/spirv/vtn_alu.c
parent5debfeb86f524b06aa3b80f9855947a57b5f91e8 (diff)
glsl: Fix assert fails when assignment expressions are in array sizes.
Karol Herbst's fuzzing efforts discovered that we would hit the following assert: assert(dummy_instructions.is_empty()); when processing an illegal array size expression of float[(1=1)?1:1] t; In do_assignment, we realized we needed an rvalue for (1 = 1), and generated a temporary variable and assignment from the RHS. We've already flagged an error (non-lvalue in assignment), and return a bogus value as the rvalue. But process_array_size sees the bogus value, which happened to be a constant expression, and rightly assumes that processing a constant expression shouldn't have generated any code. instructions. To handle this, make do_assignment not generate any temps or assignments when it's already raised an error - just return an error value directly. Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=98694 Signed-off-by: Kenneth Graunke <[email protected]> Reviewed-by: Timothy Arceri <[email protected]>
Diffstat (limited to 'src/compiler/spirv/vtn_alu.c')
0 files changed, 0 insertions, 0 deletions