diff options
author | Eric Anholt <[email protected]> | 2012-04-23 17:24:13 -0700 |
---|---|---|
committer | Eric Anholt <[email protected]> | 2012-05-04 14:00:32 -0700 |
commit | 4595288ba844def45cc858fab44fad3efa1ab4c8 (patch) | |
tree | fabe00c0dfb5e68902938d12473505444ca18cb5 /src | |
parent | 3362c7d9b61462855f1e7d67da5d255de1b6ee7e (diff) |
glsl: Fix regression in function out-parameter lvalue detection.
When doing the var->assigned change in
f2475ca424f7e001be50f64dafa5700f6603d684, I overzealously indented the
second block of code into the "if (var)" test. Revert these blocks to
the way they were before, just taking advantage of "var" to avoid
re-calling variable_referenced().
Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=49066
Diffstat (limited to 'src')
-rw-r--r-- | src/glsl/ast_function.cpp | 28 |
1 files changed, 14 insertions, 14 deletions
diff --git a/src/glsl/ast_function.cpp b/src/glsl/ast_function.cpp index 8bf0ba2a876..58cf6854b85 100644 --- a/src/glsl/ast_function.cpp +++ b/src/glsl/ast_function.cpp @@ -153,21 +153,21 @@ verify_parameter_modes(_mesa_glsl_parse_state *state, } ir_variable *var = actual->variable_referenced(); - if (var) { - if (var->read_only) { - _mesa_glsl_error(&loc, state, - "function parameter '%s %s' references the " - "read-only variable '%s'", - mode, formal->name, - actual->variable_referenced()->name); - return false; - } else if (!actual->is_lvalue()) { - _mesa_glsl_error(&loc, state, - "function parameter '%s %s' is not an lvalue", - mode, formal->name); - return false; - } + if (var) var->assigned = true; + + if (var && var->read_only) { + _mesa_glsl_error(&loc, state, + "function parameter '%s %s' references the " + "read-only variable '%s'", + mode, formal->name, + actual->variable_referenced()->name); + return false; + } else if (!actual->is_lvalue()) { + _mesa_glsl_error(&loc, state, + "function parameter '%s %s' is not an lvalue", + mode, formal->name); + return false; } } |