Mesa (glsl2): glsl2: Remove generate_temporary and global temporary counter .

Ian Romanick idr at kemper.freedesktop.org
Fri Jul 9 17:43:16 UTC 2010


Module: Mesa
Branch: glsl2
Commit: dfd30ca6a95a7d95835dad78ffe1fba4d1f4ef69
URL:    http://cgit.freedesktop.org/mesa/mesa/commit/?id=dfd30ca6a95a7d95835dad78ffe1fba4d1f4ef69

Author: Kenneth Graunke <kenneth at whitecape.org>
Date:   Thu Jul  8 12:40:52 2010 -0700

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...)

---

 src/glsl/ast_to_hir.cpp        |   32 +++++---------------------------
 src/glsl/glsl_parser_extras.h  |    3 ---
 src/glsl/main.cpp              |    1 -
 src/mesa/shader/ir_to_mesa.cpp |    1 -
 4 files changed, 5 insertions(+), 32 deletions(-)

diff --git a/src/glsl/ast_to_hir.cpp b/src/glsl/ast_to_hir.cpp
index e716b8a..e03bb63 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 16f7268..4b28ae1 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 782934a..dd43d12 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;
 
diff --git a/src/mesa/shader/ir_to_mesa.cpp b/src/mesa/shader/ir_to_mesa.cpp
index 4496daf..708c6fe 100644
--- a/src/mesa/shader/ir_to_mesa.cpp
+++ b/src/mesa/shader/ir_to_mesa.cpp
@@ -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;
 




More information about the mesa-commit mailing list