diff options
author | Kenneth Graunke <[email protected]> | 2010-06-25 13:36:14 -0700 |
---|---|---|
committer | Eric Anholt <[email protected]> | 2010-06-28 11:14:47 -0700 |
commit | a815f7fb83b1117e957c097044f36eae3a6851fb (patch) | |
tree | d124a3ecf05524c80351f86f638a6f2d21091122 /src/glsl | |
parent | 22c23dedad4e7f362ffbd990f1c2d5caf4cae75a (diff) |
Use more sensible contexts in ir_dead_code_local.
Diffstat (limited to 'src/glsl')
-rw-r--r-- | src/glsl/ir_dead_code_local.cpp | 7 |
1 files changed, 4 insertions, 3 deletions
diff --git a/src/glsl/ir_dead_code_local.cpp b/src/glsl/ir_dead_code_local.cpp index e01877077c9..5e197e19484 100644 --- a/src/glsl/ir_dead_code_local.cpp +++ b/src/glsl/ir_dead_code_local.cpp @@ -111,9 +111,8 @@ public: * of a variable to a variable. */ static bool -process_assignment(ir_assignment *ir, exec_list *assignments) +process_assignment(void *ctx, ir_assignment *ir, exec_list *assignments) { - void *ctx = talloc_parent(ir); ir_variable *var = NULL; bool progress = false; kill_for_derefs_visitor v(assignments); @@ -186,6 +185,7 @@ dead_code_local_basic_block(ir_instruction *first, bool *out_progress = (bool *)data; bool progress = false; + void *ctx = talloc(NULL, void*); /* Safe looping, since process_assignment */ for (ir = first, ir_next = (ir_instruction *)first->next;; ir = ir_next, ir_next = (ir_instruction *)ir->next) { @@ -197,7 +197,7 @@ dead_code_local_basic_block(ir_instruction *first, } if (ir_assign) { - progress = process_assignment(ir_assign, &assignments) || progress; + progress = process_assignment(ctx, ir_assign, &assignments) || progress; } else { kill_for_derefs_visitor kill(&assignments); ir->accept(&kill); @@ -207,6 +207,7 @@ dead_code_local_basic_block(ir_instruction *first, break; } *out_progress = progress; + talloc_free(ctx); } /** |