summaryrefslogtreecommitdiff
path: root/src/glsl
diff options
context:
space:
mode:
authorKenneth Graunke <kenneth@whitecape.org>2010-07-08 12:40:52 -0700
committerKenneth Graunke <kenneth@whitecape.org>2010-07-08 15:44:19 -0700
commitdfd30ca6a95a7d95835dad78ffe1fba4d1f4ef69 (patch)
tree2f40fbcbd069abb14fc977372e96c73ed35c01e3 /src/glsl
parent25cda5039df0da6c2c65f1cac1bfc750c0c16e82 (diff)
glsl2: Remove generate_temporary and global temporary counter.
Most places in the code simply use a static name, which works because names are never used to look up an ir_variable. generate_temporary is simply unnecessary (and looks like it would leak memory, and isn't thread safe...)
Diffstat (limited to 'src/glsl')
-rw-r--r--src/glsl/ast_to_hir.cpp32
-rw-r--r--src/glsl/glsl_parser_extras.h3
-rw-r--r--src/glsl/main.cpp1
3 files changed, 5 insertions, 31 deletions
diff --git a/src/glsl/ast_to_hir.cpp b/src/glsl/ast_to_hir.cpp
index e716b8a11e..e03bb6394f 100644
--- a/src/glsl/ast_to_hir.cpp
+++ b/src/glsl/ast_to_hir.cpp
@@ -542,27 +542,6 @@ do_assignment(exec_list *instructions, struct _mesa_glsl_parse_state *state,
return new(ctx) ir_dereference_variable(var);
}
-
-/**
- * Generate a new temporary and add its declaration to the instruction stream
- */
-static ir_variable *
-generate_temporary(const glsl_type *type, exec_list *instructions,
- struct _mesa_glsl_parse_state *state)
-{
- void *ctx = state;
- char *name = (char *) malloc(sizeof(char) * 13);
-
- snprintf(name, 13, "tmp_%08X", state->temp_index);
- state->temp_index++;
-
- ir_variable *const var = new(ctx) ir_variable(type, name);
- instructions->push_tail(var);
-
- return var;
-}
-
-
static ir_rvalue *
get_lvalue_copy(exec_list *instructions, ir_rvalue *lvalue)
{
@@ -840,8 +819,8 @@ ast_expression::hir(exec_list *instructions,
error_emitted = true;
}
- ir_variable *const tmp = generate_temporary(glsl_type::bool_type,
- instructions, state);
+ ir_variable *const tmp = new(ctx) ir_variable(glsl_type::bool_type,
+ "and_tmp");
ir_dereference *const then_deref = new(ctx) ir_dereference_variable(tmp);
ir_assignment *const then_assign =
@@ -892,8 +871,8 @@ ast_expression::hir(exec_list *instructions,
ir_if *const stmt = new(ctx) ir_if(op[0]);
instructions->push_tail(stmt);
- ir_variable *const tmp = generate_temporary(glsl_type::bool_type,
- instructions, state);
+ ir_variable *const tmp = new(ctx) ir_variable(glsl_type::bool_type,
+ "or_tmp");
op[1] = this->subexpressions[1]->hir(&stmt->then_instructions, state);
@@ -1068,8 +1047,7 @@ ast_expression::hir(exec_list *instructions,
&& (cond_val != NULL) && (then_val != NULL) && (else_val != NULL)) {
result = (cond_val->value.b[0]) ? then_val : else_val;
} else {
- ir_variable *const tmp = generate_temporary(type,
- instructions, state);
+ ir_variable *const tmp = new(ctx) ir_variable(type, "conditional_tmp");
ir_if *const stmt = new(ctx) ir_if(op[0]);
instructions->push_tail(stmt);
diff --git a/src/glsl/glsl_parser_extras.h b/src/glsl/glsl_parser_extras.h
index 16f7268181..4b28ae118d 100644
--- a/src/glsl/glsl_parser_extras.h
+++ b/src/glsl/glsl_parser_extras.h
@@ -67,9 +67,6 @@ struct _mesa_glsl_parse_state {
/** Was there an error during compilation? */
bool error;
- /** Index of last generated anonymous temporary. */
- unsigned temp_index;
-
/** Loop or switch statement containing the current instructions. */
class ir_instruction *loop_or_switch_nesting;
diff --git a/src/glsl/main.cpp b/src/glsl/main.cpp
index 782934a8d7..dd43d12474 100644
--- a/src/glsl/main.cpp
+++ b/src/glsl/main.cpp
@@ -124,7 +124,6 @@ compile_shader(struct gl_shader *shader)
state->symbols = new(shader) glsl_symbol_table;
state->info_log = talloc_strdup(shader, "");
state->error = false;
- state->temp_index = 0;
state->loop_or_switch_nesting = NULL;
state->ARB_texture_rectangle_enable = true;