mesa: code clean-up in glsl compiler
authorBrian Paul <brian.paul@tungstengraphics.com>
Fri, 12 Dec 2008 23:20:31 +0000 (16:20 -0700)
committerBrian Paul <brianp@vmware.com>
Tue, 6 Jan 2009 16:11:52 +0000 (09:11 -0700)
(cherry picked from commit d4be09fb2b4a2a45a95a388f536aee566e05f96a)

src/mesa/shader/slang/slang_codegen.c

index d0e6b6cc5e3a2c88610beb00be5ec2327cd910c3..5da0614243a5f40c8c5722c2b5a2863d6e29d4ae 100644 (file)
@@ -2709,12 +2709,6 @@ _slang_gen_var_decl(slang_assemble_ctx *A, slang_variable *var,
       const char *varName = (const char *) var->a_name;
       slang_ir_node *varRef, *init;
 
-      varRef = new_var(A, var);
-      if (!varRef) {
-         slang_info_log_error(A->log, "undefined variable '%s'", varName);
-         return NULL;
-      }
-
       if (var->type.qualifier == SLANG_QUAL_CONST) {
          /* if the variable is const, the initializer must be a const
           * expression as well.
@@ -2731,11 +2725,17 @@ _slang_gen_var_decl(slang_assemble_ctx *A, slang_variable *var,
       /* constant-folding, etc here */
       _slang_simplify(initializer, &A->space, A->atoms); 
 
+      /* IR for initializer */
       init = _slang_gen_operation(A, initializer);
       if (!init)
          return NULL;
 
-      /*assert(init->Store);*/
+      /* IR for the variable we're initializing */
+      varRef = new_var(A, var);
+      if (!varRef) {
+         slang_info_log_error(A->log, "undefined variable '%s'", varName);
+         return NULL;
+      }
 
       /* XXX remove this when type checking is added above */
       if (init->Store && varRef->Store->Size != init->Store->Size) {
@@ -2743,6 +2743,7 @@ _slang_gen_var_decl(slang_assemble_ctx *A, slang_variable *var,
          return NULL;
       }
 
+      /* assign RHS to LHS */
       n = new_node2(IR_COPY, varRef, init);
       n = new_seq(varDecl, n);
    }