mirror of
https://gitlab.freedesktop.org/mesa/mesa.git
synced 2026-05-05 20:28:04 +02:00
ir_reader: Emit global variables at the top of the instruction list.
Since functions are emitted when scanning for prototypes, functions always come first, even if the original IR listed the variable declarations first. Fixes an ir_validate error (to be turned on in the next commit).
This commit is contained in:
parent
b758de16e3
commit
2809d70723
1 changed files with 11 additions and 2 deletions
|
|
@ -337,8 +337,17 @@ read_instructions(_mesa_glsl_parse_state *st, exec_list *instructions,
|
|||
foreach_iter(exec_list_iterator, it, list->subexpressions) {
|
||||
s_expression *sub = (s_expression*) it.get();
|
||||
ir_instruction *ir = read_instruction(st, sub, loop_ctx);
|
||||
if (ir != NULL)
|
||||
instructions->push_tail(ir);
|
||||
if (ir != NULL) {
|
||||
/* Global variable declarations should be moved to the top, before
|
||||
* any functions that might use them. Functions are added to the
|
||||
* instruction stream when scanning for prototypes, so without this
|
||||
* hack, they always appear before variable declarations.
|
||||
*/
|
||||
if (st->current_function == NULL && ir->as_variable() != NULL)
|
||||
instructions->push_head(ir);
|
||||
else
|
||||
instructions->push_tail(ir);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue