mesa: compute global var size before doing codegen
authorBrian Paul <brian.paul@tungstengraphics.com>
Tue, 8 Jul 2008 19:05:34 +0000 (13:05 -0600)
committerBrian Paul <brian.paul@tungstengraphics.com>
Tue, 8 Jul 2008 21:11:53 +0000 (15:11 -0600)
src/mesa/shader/slang/slang_compile.c

index 4cda7124c050d0e380fda74d461720a7c8ce5e60..75d1d7621d7a75e331a77aed6d3850e4146505a5 100644 (file)
@@ -1634,6 +1634,15 @@ parse_init_declarator(slang_parse_ctx * C, slang_output_ctx * O,
       return 0;
    }
 
+   /* allocate global address space for a variable with a known size */
+   if (C->global_scope
+       && !(var->type.specifier.type == SLANG_SPEC_ARRAY
+            && var->array_len == 0)) {
+      if (!calculate_var_size(C, O, var))
+         return GL_FALSE;
+      var->address = slang_var_pool_alloc(O->global_pool, var->size);
+   }
+
    /* emit code for global var decl */
    if (C->global_scope) {
       slang_assemble_ctx A;
@@ -1648,15 +1657,6 @@ parse_init_declarator(slang_parse_ctx * C, slang_output_ctx * O,
          return 0;
    }
 
-   /* allocate global address space for a variable with a known size */
-   if (C->global_scope
-       && !(var->type.specifier.type == SLANG_SPEC_ARRAY
-            && var->array_len == 0)) {
-      if (!calculate_var_size(C, O, var))
-         return GL_FALSE;
-      var->address = slang_var_pool_alloc(O->global_pool, var->size);
-   }
-
    /* initialize global variable */
    if (C->global_scope) {
       if (var->initializer != NULL) {