From: Kenneth Graunke Date: Sat, 23 Nov 2013 17:51:52 +0000 (-0800) Subject: glsl: Cast ir_call parameters to ir_rvalue, not ir_instruction. X-Git-Url: https://git.libre-soc.org/?a=commitdiff_plain;h=8050584096eec50570bfc0c81926050f27a5dfe5;p=mesa.git 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 Reviewed-by: Matt Turner Reviewed-by: Ian Romanick --- diff --git a/src/glsl/ir_print_visitor.cpp b/src/glsl/ir_print_visitor.cpp index 9458595585f..93578218472 100644 --- a/src/glsl/ir_print_visitor.cpp +++ b/src/glsl/ir_print_visitor.cpp @@ -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"); } diff --git a/src/glsl/opt_copy_propagation.cpp b/src/glsl/opt_copy_propagation.cpp index 3a73342683b..44c6f2fd3e9 100644 --- a/src/glsl/opt_copy_propagation.cpp +++ b/src/glsl/opt_copy_propagation.cpp @@ -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); diff --git a/src/glsl/opt_copy_propagation_elements.cpp b/src/glsl/opt_copy_propagation_elements.cpp index 7f82a284bac..a64a9ce274f 100644 --- a/src/glsl/opt_copy_propagation_elements.cpp +++ b/src/glsl/opt_copy_propagation_elements.cpp @@ -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); diff --git a/src/glsl/opt_function_inlining.cpp b/src/glsl/opt_function_inlining.cpp index 2ae18c14f53..a140ed335e0 100644 --- a/src/glsl/opt_function_inlining.cpp +++ b/src/glsl/opt_function_inlining.cpp @@ -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. */