glsl: Cast ir_call parameters to ir_rvalue, not ir_instruction.

A function call's parameters are always rvalues.  ir_rvalue may not
always be a subclass of ir_instruction in the future, so we should use
the right one.

Signed-off-by: Kenneth Graunke <kenneth@whitecape.org>
Reviewed-by: Matt Turner <mattst88@gmail.com>
Reviewed-by: Ian Romanick <ian.d.romanick@intel.com>
This commit is contained in:
Kenneth Graunke
2013-11-23 09:51:52 -08:00
parent 2e113dfab8
commit 8050584096
4 changed files with 6 additions and 6 deletions

View File

@@ -441,9 +441,9 @@ ir_print_visitor::visit(ir_call *ir)
ir->return_deref->accept(this);
printf(" (");
foreach_list(n, &ir->actual_parameters) {
ir_instruction *const inst = (ir_instruction *) n;
ir_rvalue *const param = (ir_rvalue *) n;
inst->accept(this);
param->accept(this);
}
printf("))\n");
}

View File

@@ -188,7 +188,7 @@ ir_copy_propagation_visitor::visit_enter(ir_call *ir)
exec_list_iterator sig_param_iter = ir->callee->parameters.iterator();
foreach_iter(exec_list_iterator, iter, ir->actual_parameters) {
ir_variable *sig_param = (ir_variable *)sig_param_iter.get();
ir_instruction *ir = (ir_instruction *)iter.get();
ir_rvalue *ir = (ir_rvalue *) iter.get();
if (sig_param->data.mode != ir_var_function_out
&& sig_param->data.mode != ir_var_function_inout) {
ir->accept(this);

View File

@@ -296,7 +296,7 @@ ir_copy_propagation_elements_visitor::visit_enter(ir_call *ir)
exec_list_iterator sig_param_iter = ir->callee->parameters.iterator();
foreach_iter(exec_list_iterator, iter, ir->actual_parameters) {
ir_variable *sig_param = (ir_variable *)sig_param_iter.get();
ir_instruction *ir = (ir_instruction *)iter.get();
ir_rvalue *ir = (ir_rvalue *) iter.get();
if (sig_param->data.mode != ir_var_function_out
&& sig_param->data.mode != ir_var_function_inout) {
ir->accept(this);

View File

@@ -175,7 +175,7 @@ ir_call::generate_inline(ir_instruction *next_ir)
param_iter = this->actual_parameters.iterator();
sig_param_iter = this->callee->parameters.iterator();
for (i = 0; i < num_parameters; i++) {
ir_instruction *const param = (ir_instruction *) param_iter.get();
ir_rvalue *const param = (ir_rvalue *) param_iter.get();
ir_variable *sig_param = (ir_variable *) sig_param_iter.get();
if (sig_param->type->contains_opaque()) {
@@ -198,7 +198,7 @@ ir_call::generate_inline(ir_instruction *next_ir)
param_iter = this->actual_parameters.iterator();
sig_param_iter = this->callee->parameters.iterator();
for (i = 0; i < num_parameters; i++) {
ir_instruction *const param = (ir_instruction *) param_iter.get();
ir_rvalue *const param = (ir_rvalue *) param_iter.get();
const ir_variable *const sig_param = (ir_variable *) sig_param_iter.get();
/* Move our param variable into the actual param if it's an 'out' type. */