glsl/ast: update rhs in addition to the var's constant_value
authorIlia Mirkin <imirkin@alum.mit.edu>
Tue, 15 Aug 2017 17:47:08 +0000 (13:47 -0400)
committerIlia Mirkin <imirkin@alum.mit.edu>
Wed, 16 Aug 2017 02:14:05 +0000 (22:14 -0400)
We continue in the code to do some more things with the rhs, including
setting a constant initializer. If the type is wrong, this causes some
confusion down the line, leading to assertions. This makes sure that the
rhs processing continues to flow as-if the type was correct to start
with (even though the state has been marked as an error state).

Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=101766
Signed-off-by: Ilia Mirkin <imirkin@alum.mit.edu>
Reviewed-by: Kenneth Graunke <kenneth@whitecape.org>
Cc: mesa-stable@lists.freedesktop.org
src/compiler/glsl/ast_to_hir.cpp

index a07c0ecf953477720f0ac6317a91e83e04efb698..f0a96c3e1e80c8a6605a56f88925cb3866b3f315 100644 (file)
@@ -4500,7 +4500,7 @@ process_initializer(ir_variable *var, ast_declaration *decl,
       } else {
          if (var->type->is_numeric()) {
             /* Reduce cascading errors. */
-            var->constant_value = type->qualifier.flags.q.constant
+            rhs = var->constant_value = type->qualifier.flags.q.constant
                ? ir_constant::zero(state, var->type) : NULL;
          }
       }