glsl: Count function call outvals as writing to variables for linker checks.

Fixes: glsl-vs-position-outval.  Bug #28138 (regnum online)
This commit is contained in:
Eric Anholt
2010-08-23 11:29:25 -07:00
parent 6dad5a4e8d
commit 18a6023900

View File

@@ -106,6 +106,27 @@ public:
return visit_continue_with_parent;
}
virtual ir_visitor_status visit_enter(ir_call *ir)
{
exec_list_iterator sig_iter = ir->get_callee()->parameters.iterator();
foreach_iter(exec_list_iterator, iter, *ir) {
ir_rvalue *param_rval = (ir_rvalue *)iter.get();
ir_variable *sig_param = (ir_variable *)sig_iter.get();
if (sig_param->mode == ir_var_out ||
sig_param->mode == ir_var_inout) {
ir_variable *var = param_rval->variable_referenced();
if (var && strcmp(name, var->name) == 0) {
found = true;
return visit_stop;
}
}
sig_iter.next();
}
return visit_continue_with_parent;
}
bool variable_found()
{
return found;