[Mesa-dev] [PATCH 4/8] glsl: Cast ir_call parameters to ir_rvalue, not ir_instruction.

Kenneth Graunke kenneth at whitecape.org
Sat Jan 11 02:37:08 PST 2014


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 at whitecape.org>
---
 src/glsl/ir_print_visitor.cpp              | 4 ++--
 src/glsl/opt_copy_propagation.cpp          | 2 +-
 src/glsl/opt_copy_propagation_elements.cpp | 2 +-
 src/glsl/opt_function_inlining.cpp         | 4 ++--
 4 files changed, 6 insertions(+), 6 deletions(-)

diff --git a/src/glsl/ir_print_visitor.cpp b/src/glsl/ir_print_visitor.cpp
index 9458595..9357821 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 3a73342..44c6f2f 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 7f82a28..a64a9ce 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 2ae18c1..a140ed3 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. */
-- 
1.8.5.2



More information about the mesa-dev mailing list