Module: Mesa Branch: master Commit: f09fabc448c0781f0cf9160565e1b0bab59a16e5 URL: http://cgit.freedesktop.org/mesa/mesa/commit/?id=f09fabc448c0781f0cf9160565e1b0bab59a16e5
Author: Ian Romanick <[email protected]> Date: Tue Sep 7 14:30:06 2010 -0700 glsl2: Forbid array-types in ?: operator in GLSL 1.10 Fixes bugzilla #30039. --- src/glsl/ast_to_hir.cpp | 11 +++++++++++ 1 files changed, 11 insertions(+), 0 deletions(-) diff --git a/src/glsl/ast_to_hir.cpp b/src/glsl/ast_to_hir.cpp index 762f802..7828403 100644 --- a/src/glsl/ast_to_hir.cpp +++ b/src/glsl/ast_to_hir.cpp @@ -1125,6 +1125,17 @@ ast_expression::hir(exec_list *instructions, type = op[1]->type; } + /* From page 33 (page 39 of the PDF) of the GLSL 1.10 spec: + * + * "The second and third expressions must be the same type, but can + * be of any type other than an array." + */ + if ((state->language_version <= 110) && type->is_array()) { + _mesa_glsl_error(& loc, state, "Second and third operands of ?: " + "operator must not be arrays."); + error_emitted = true; + } + ir_constant *cond_val = op[0]->constant_expression_value(); ir_constant *then_val = op[1]->constant_expression_value(); ir_constant *else_val = op[2]->constant_expression_value(); _______________________________________________ mesa-commit mailing list [email protected] http://lists.freedesktop.org/mailman/listinfo/mesa-commit
