On Mon, Jun 9, 2014 at 4:29 AM, Tapani Pälli <tapani.pa...@intel.com> wrote: > Signed-off-by: Tapani Pälli <tapani.pa...@intel.com> > Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=79724 > --- > src/glsl/ast_to_hir.cpp | 9 +++++++++ > 1 file changed, 9 insertions(+) > > diff --git a/src/glsl/ast_to_hir.cpp b/src/glsl/ast_to_hir.cpp > index d1c77f1..131b25f 100644 > --- a/src/glsl/ast_to_hir.cpp > +++ b/src/glsl/ast_to_hir.cpp > @@ -4629,6 +4629,15 @@ ast_case_label::hir(exec_list *instructions, > } > } > > + /* Check that types match (no implicit conversions allowed). */
Good news. GLSL 4.30 updated the text to say (I think as a clarification, so we should have this behavior always): The type of the init-expression value in a switch statement must be a scalar int or uint. The type of the constant-expression value in a case label also must be a scalar int or uint. When any pair of these values is tested for "equal value" and the types do not match, an implicit conversion will be done to convert the int to a uint (see section 4.1.10 “Implicit Conversions”) before the compare is done. Please replace this comment with that spec citation in our usual format. I guess we'll need a little bit of code to handle implicit conversions here, but apparently only for int -> uint which is a relief. _______________________________________________ mesa-dev mailing list mesa-dev@lists.freedesktop.org http://lists.freedesktop.org/mailman/listinfo/mesa-dev