glsl2: Insert global declarations at the top of the instruction stream.

Fixes use-before-decl in glslparsertest shaders.

Fixes:
CorrectFull.frag
CorrectModule.frag
This commit is contained in:
Eric Anholt
2010-08-05 14:41:09 -07:00
parent 0a0ab121f8
commit 8048226b7b

View File

@@ -1951,7 +1951,14 @@ ast_declarator_list::hir(exec_list *instructions,
decl->identifier);
}
instructions->push_tail(var);
/* Push the variable declaration to the top. It means that all
* the variable declarations will appear in a funny
* last-to-first order, but otherwise we run into trouble if a
* function is prototyped, a global var is decled, then the
* function is defined with usage of the global var. See
* glslparsertest's CorrectModule.frag.
*/
instructions->push_head(var);
instructions->append_list(&initializer_instructions);
/* Add the variable to the symbol table after processing the initializer.