glsl2: Remove generate_temporary and global temporary counter.
authorKenneth Graunke <kenneth@whitecape.org>
Thu, 8 Jul 2010 19:40:52 +0000 (12:40 -0700)
committerKenneth Graunke <kenneth@whitecape.org>
Thu, 8 Jul 2010 22:44:19 +0000 (15:44 -0700)
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...)

src/glsl/ast_to_hir.cpp
src/glsl/glsl_parser_extras.h
src/glsl/main.cpp
src/mesa/shader/ir_to_mesa.cpp

index e716b8a11e7e3b7191a74bde370e2c9190ef08f7..e03bb6394fbe8a20b7ffd82d0b9bd54b0444ddbb 100644 (file)
@@ -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);
index 16f72681816b145eecbaa2b86755019b70a1487f..4b28ae118df1bab03647ab3d3055e2d47b8be68f 100644 (file)
@@ -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;
 
index 782934a8d7e949a525ab02a3aaf40b76b93f1e24..dd43d12474b88634f3101541bc147ebebdb0d19b 100644 (file)
@@ -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;
 
index 4496daf2a5551319c1e3f118254704c931e95933..708c6fece1c1fe9e4ad72a2da7176c5657418132 100644 (file)
@@ -1938,7 +1938,6 @@ _mesa_glsl_compile_shader(GLcontext *ctx, 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;