summaryrefslogtreecommitdiff
path: root/src/mesa/shader/slang/slang_emit.c
diff options
context:
space:
mode:
authorBrian <brian@yutani.localnet.net>2007-01-17 09:54:31 -0700
committerBrian <brian@yutani.localnet.net>2007-01-17 09:54:31 -0700
commit811f54fa75a557380b34ac97929eaa0190d2d5aa (patch)
tree6241ff5addff4e0d5e92a9808c232ffa7f4ec9fa /src/mesa/shader/slang/slang_emit.c
parent552a65e4546bd543d60ffe87dc298a41d8a318be (diff)
Fix/clean-up a number of things related to variable/temporary allocation.
Diffstat (limited to 'src/mesa/shader/slang/slang_emit.c')
-rw-r--r--src/mesa/shader/slang/slang_emit.c9
1 files changed, 7 insertions, 2 deletions
diff --git a/src/mesa/shader/slang/slang_emit.c b/src/mesa/shader/slang/slang_emit.c
index 1142bc6416..52627486bd 100644
--- a/src/mesa/shader/slang/slang_emit.c
+++ b/src/mesa/shader/slang/slang_emit.c
@@ -618,10 +618,15 @@ emit(slang_var_table *vt, slang_ir_node *n, struct gl_program *prog)
assert(n->Store->File != PROGRAM_UNDEFINED);
assert(n->Store->Size > 0);
assert(n->Store->Index < 0);
- if (!n->Var || n->Var->isTemp)
+ if (!n->Var || n->Var->isTemp) {
+ /* a nameless/temporary variable, will be freed after first use */
n->Store->Index = _slang_alloc_temp(vt, n->Store->Size);
- else
+ }
+ else {
+ /* a regular variable */
+ _slang_add_variable(vt, n->Var);
n->Store->Index = _slang_alloc_var(vt, n->Store->Size);
+ }
assert(n->Store->Index >= 0);
break;