Mesa (master): glsl2: Forbid array-types in ?: operator in GLSL 1.10
Ian Romanick
idr at kemper.freedesktop.org
Tue Sep 7 21:39:03 UTC 2010
Module: Mesa
Branch: master
Commit: f09fabc448c0781f0cf9160565e1b0bab59a16e5
URL: http://cgit.freedesktop.org/mesa/mesa/commit/?id=f09fabc448c0781f0cf9160565e1b0bab59a16e5
Author: Ian Romanick <ian.d.romanick at intel.com>
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();
More information about the mesa-commit
mailing list