diff options
author | Kenneth Graunke <[email protected]> | 2010-06-25 14:10:01 -0700 |
---|---|---|
committer | Ian Romanick <[email protected]> | 2010-06-30 13:52:24 -0700 |
commit | 116f1d4f95d8eb0a82b272016590549632c865b3 (patch) | |
tree | 320bfa5fc3869e5d2dd61ec21fbd09fae229e207 /src/glsl/main.cpp | |
parent | ef5f1948316664055c1444d12076c7d86589a8b9 (diff) |
glsl2: Steal the live IR and free the rest of the junk.
Diffstat (limited to 'src/glsl/main.cpp')
-rw-r--r-- | src/glsl/main.cpp | 11 |
1 files changed, 11 insertions, 0 deletions
diff --git a/src/glsl/main.cpp b/src/glsl/main.cpp index 1ed22e1f33b..8b2eeaa13ab 100644 --- a/src/glsl/main.cpp +++ b/src/glsl/main.cpp @@ -99,6 +99,12 @@ const struct option compiler_opts[] = { { NULL, 0, NULL, 0 } }; +static void +steal_memory(ir_instruction *ir, void *new_ctx) +{ + talloc_steal(new_ctx, ir); +} + void compile_shader(struct gl_shader *shader) { @@ -187,6 +193,11 @@ compile_shader(struct gl_shader *shader) shader->InfoLog = state->info_log; + /* Retain any live IR, but trash the rest. */ + foreach_list(node, shader->ir) { + visit_tree((ir_instruction *) node, steal_memory, shader); + } + talloc_free(state); return; |