Mesa (master): glsl: better fix for for-loop scope issue ( commit 6333005f7aea3e5d1d86a5c47b3fa2a1ed2f3ff0)

Brian Paul brianp at kemper.freedesktop.org
Mon Jan 12 17:56:58 UTC 2009


Module: Mesa
Branch: master
Commit: 06fdb6a74cfdddb5f598ddfeab890c59f176dab8
URL:    http://cgit.freedesktop.org/mesa/mesa/commit/?id=06fdb6a74cfdddb5f598ddfeab890c59f176dab8

Author: Brian Paul <brianp at vmware.com>
Date:   Mon Jan 12 08:52:54 2009 -0700

glsl: better fix for for-loop scope issue (commit 6333005f7aea3e5d1d86a5c47b3fa2a1ed2f3ff0)

---

 src/mesa/shader/slang/library/slang_shader.syn   |   13 +++----------
 src/mesa/shader/slang/library/slang_shader_syn.h |    4 +---
 src/mesa/shader/slang/slang_compile.c            |   18 ------------------
 3 files changed, 4 insertions(+), 31 deletions(-)

diff --git a/src/mesa/shader/slang/library/slang_shader.syn b/src/mesa/shader/slang/library/slang_shader.syn
index 0ad4a1c..cc5c70a 100644
--- a/src/mesa/shader/slang/library/slang_shader.syn
+++ b/src/mesa/shader/slang/library/slang_shader.syn
@@ -1162,13 +1162,6 @@ compound_statement_3
     lbrace .and statement_list .and rbrace;
 
 /*
- * <statement_no_new_scope> ::= <compound_statement_no_new_scope>
- *                            | <simple_statement>
- */
-statement_no_new_scope
-    compound_statement_no_new_scope .or simple_statement;
-
-/*
  * <compound_statement_no_new_scope> ::= "{" "}"
  *                                     | "{" <statement_list> "}"
  */
@@ -1181,6 +1174,7 @@ compound_statement_no_new_scope_2
 compound_statement_no_new_scope_3
     lbrace .and statement_list .and rbrace;
 
+
 /*
  * <statement_list> ::= <statement>
  *                    | <statement_list> <statement>
@@ -1242,8 +1236,7 @@ condition_3
 /*
  * <iteration_statement> ::= "while" "(" <condition> ")" <statement>
  *                         | "do" <statement> "while" "(" <expression> ")" ";"
- *                         | "for" "(" <for_init_statement> <for_rest_statement> ")"
- *                            <statement_no_new_scope>
+ *                         | "for" "(" <for_init_statement> <for_rest_statement> ")" <statement>
  */
 iteration_statement
     iteration_statement_1 .or iteration_statement_2 .or iteration_statement_3;
@@ -1255,7 +1248,7 @@ iteration_statement_2
     expression .and rparen .error RPAREN_EXPECTED .emit OP_END .and semicolon;
 iteration_statement_3
     "for" .emit OP_FOR .and lparen .error LPAREN_EXPECTED .and for_init_statement .and
-    for_rest_statement .and rparen .error RPAREN_EXPECTED .and statement_no_new_scope;
+    for_rest_statement .and rparen .error RPAREN_EXPECTED .and statement;
 
 /*
  * <for_init_statement> ::= <expression_statement>
diff --git a/src/mesa/shader/slang/library/slang_shader_syn.h b/src/mesa/shader/slang/library/slang_shader_syn.h
index e1705df..6a38297 100644
--- a/src/mesa/shader/slang/library/slang_shader_syn.h
+++ b/src/mesa/shader/slang/library/slang_shader_syn.h
@@ -566,8 +566,6 @@
 " lbrace .and rbrace;\n"
 "compound_statement_3\n"
 " lbrace .and statement_list .and rbrace;\n"
-"statement_no_new_scope\n"
-" compound_statement_no_new_scope .or simple_statement;\n"
 "compound_statement_no_new_scope\n"
 " compound_statement_no_new_scope_1 .emit OP_BLOCK_BEGIN_NO_NEW_SCOPE .and .true .emit OP_END;\n"
 "compound_statement_no_new_scope_1\n"
@@ -617,7 +615,7 @@
 " expression .and rparen .error RPAREN_EXPECTED .emit OP_END .and semicolon;\n"
 "iteration_statement_3\n"
 " \"for\" .emit OP_FOR .and lparen .error LPAREN_EXPECTED .and for_init_statement .and\n"
-" for_rest_statement .and rparen .error RPAREN_EXPECTED .and statement_no_new_scope;\n"
+" for_rest_statement .and rparen .error RPAREN_EXPECTED .and statement;\n"
 "for_init_statement\n"
 " expression_statement .emit OP_EXPRESSION .or declaration_statement .emit OP_DECLARE;\n"
 "conditionopt\n"
diff --git a/src/mesa/shader/slang/slang_compile.c b/src/mesa/shader/slang/slang_compile.c
index add8594..ec27fc6 100644
--- a/src/mesa/shader/slang/slang_compile.c
+++ b/src/mesa/shader/slang/slang_compile.c
@@ -1138,26 +1138,8 @@ parse_statement(slang_parse_ctx * C, slang_output_ctx * O,
             RETURN0;
          if (!parse_child_operation(C, &o, oper, GL_FALSE))
             RETURN0;
-#if 0
          if (!parse_child_operation(C, &o, oper, GL_TRUE))
             RETURN0;
-#else
-         /* force creation of new scope for loop body */
-         {
-            slang_operation *ch;
-            slang_output_ctx oo = o;
-
-            /* grow child array */
-            ch = slang_operation_grow(&oper->num_children, &oper->children);
-            ch->type = SLANG_OPER_BLOCK_NEW_SCOPE;
-
-            ch->locals->outer_scope = o.vars;
-            oo.vars = ch->locals;
-
-            if (!parse_child_operation(C, &oo, ch, GL_TRUE))
-               RETURN0;
-         }
-#endif
       }
       break;
    case OP_PRECISION:




More information about the mesa-commit mailing list