Module: Mesa Branch: master Commit: 3751e6e1fc385739022d0942b46e175632ad0d4b URL: http://cgit.freedesktop.org/mesa/mesa/commit/?id=3751e6e1fc385739022d0942b46e175632ad0d4b
Author: Brian Paul <[email protected]> Date: Thu Jul 8 09:22:52 2010 -0600 glsl: fix 'if ((x=foo()) > 1.0)' bug Fixes fd.o bug 27216. May also be the root cause of fd.o bug 28950. We weren't propogating the storage info for the x=foo() expression up through the IR tree to the inequality expression. NOTE: This is a candidate for the Mesa 7.8 branch. --- src/mesa/slang/slang_emit.c | 6 +++++- 1 files changed, 5 insertions(+), 1 deletions(-) diff --git a/src/mesa/slang/slang_emit.c b/src/mesa/slang/slang_emit.c index aa9d662..127c672 100644 --- a/src/mesa/slang/slang_emit.c +++ b/src/mesa/slang/slang_emit.c @@ -2361,7 +2361,10 @@ emit(slang_emit_info *emitInfo, slang_ir_node *n) #if 0 assert(!n->Store); #endif - n->Store = n->Children[1]->Store; + if (n->Children[1]->Store) + n->Store = n->Children[1]->Store; + else + n->Store = n->Children[0]->Store; return inst; case IR_SCOPE: @@ -2369,6 +2372,7 @@ emit(slang_emit_info *emitInfo, slang_ir_node *n) _slang_push_var_table(emitInfo->vt); inst = emit(emitInfo, n->Children[0]); _slang_pop_var_table(emitInfo->vt); + n->Store = n->Children[0]->Store; return inst; case IR_VAR_DECL: _______________________________________________ mesa-commit mailing list [email protected] http://lists.freedesktop.org/mailman/listinfo/mesa-commit
