glsl: change variable declared assertion into conditional
authorBrian Paul <brianp@vmware.com>
Mon, 3 May 2010 19:58:51 +0000 (13:58 -0600)
committerBrian Paul <brianp@vmware.com>
Mon, 3 May 2010 19:58:53 +0000 (13:58 -0600)
The slang_variable::declared field originated as a debug field but
can be promoted for use during sematic error checking.

Fixes fd.o bug 27921.

NOTE: this is a candidate for back-porting to the 7.8 stable branch.

src/mesa/shader/slang/slang_codegen.c
src/mesa/shader/slang/slang_compile_variable.h

index 27ac1da9ad8aafb49c5b9f40fc573a4b5996d014..4b876a460c23a6195b36757bb5df61c802dbea3c 100644 (file)
@@ -4187,11 +4187,10 @@ _slang_gen_variable(slang_assemble_ctx * A, slang_operation *oper)
    slang_atom name = oper->var ? oper->var->a_name : oper->a_id;
    slang_variable *var = _slang_variable_locate(oper->locals, name, GL_TRUE);
    slang_ir_node *n;
-   if (!var) {
+   if (!var || !var->declared) {
       slang_info_log_error(A->log, "undefined variable '%s'", (char *) name);
       return NULL;
    }
-   assert(var->declared);
    n = new_var(A, var);
    return n;
 }
index b4585599f248219d1efb33e207a3f09eed3d957e..5c9d248b35461ee51eec6542c1e79eef5c89c6b9 100644 (file)
@@ -41,7 +41,7 @@ typedef struct slang_variable_
    GLuint size;                     /**< Variable's size in bytes */
    GLboolean is_global;
    GLboolean isTemp;                /**< a named temporary (__resultTmp) */
-   GLboolean declared;              /**< for debug */
+   GLboolean declared;              /**< has the var been declared? */
    struct slang_ir_storage_ *store; /**< Storage for this var */
 } slang_variable;