Also add a comment that this should only be used by the ir_reader
interface for testing purposes.
---
 src/compiler/glsl/ir.cpp |  8 ++++++--
 src/compiler/glsl/ir.h   | 14 +++-----------
 2 files changed, 9 insertions(+), 13 deletions(-)

diff --git a/src/compiler/glsl/ir.cpp b/src/compiler/glsl/ir.cpp
index d501e19c01..194d535790 100644
--- a/src/compiler/glsl/ir.cpp
+++ b/src/compiler/glsl/ir.cpp
@@ -549,38 +549,42 @@ ir_expression::ir_expression(int op, ir_rvalue *op0, 
ir_rvalue *op1,
    case ir_triop_csel:
       this->type = op1->type;
       break;
 
    default:
       assert(!"not reached: missing automatic type setup for ir_expression");
       this->type = glsl_type::float_type;
    }
 }
 
-unsigned int
+/**
+ * This is only here for ir_reader to used for testing purposes please use
+ * the precomputed num_operands field if you need the number of operands.
+ */
+unsigned
 ir_expression::get_num_operands(ir_expression_operation op)
 {
    assert(op <= ir_last_opcode);
 
    if (op <= ir_last_unop)
       return 1;
 
    if (op <= ir_last_binop)
       return 2;
 
    if (op <= ir_last_triop)
       return 3;
 
    if (op <= ir_last_quadop)
       return 4;
 
-   assert(false);
+   assert(!"could not calculate number of operands");
    return 0;
 }
 
 #include "ir_expression_operation_strings.h"
 
 const char*
 depth_layout_string(ir_depth_layout layout)
 {
    switch(layout) {
    case ir_depth_layout_none:      return "";
diff --git a/src/compiler/glsl/ir.h b/src/compiler/glsl/ir.h
index 377e03657d..70b5716965 100644
--- a/src/compiler/glsl/ir.h
+++ b/src/compiler/glsl/ir.h
@@ -1531,32 +1531,24 @@ public:
     * The "variable_context" hash table links ir_variable * to ir_constant *
     * that represent the variables' values.  \c NULL represents an empty
     * context.
     *
     * If the expression cannot be constant folded, this method will return
     * \c NULL.
     */
    virtual ir_constant *constant_expression_value(struct hash_table 
*variable_context = NULL);
 
    /**
-    * Determine the number of operands used by an expression
+    * This is only here for ir_reader to used for testing purposes please use
+    * the precomputed num_operands field if you need the number of operands.
     */
-   static unsigned int get_num_operands(ir_expression_operation);
-
-   /**
-    * Determine the number of operands used by an expression
-    */
-   unsigned int get_num_operands() const
-   {
-      return (this->operation == ir_quadop_vector)
-        ? this->type->vector_elements : get_num_operands(operation);
-   }
+   static unsigned get_num_operands(ir_expression_operation);
 
    /**
     * Return whether the expression operates on vectors horizontally.
     */
    bool is_horizontal() const
    {
       return operation == ir_binop_all_equal ||
              operation == ir_binop_any_nequal ||
              operation == ir_binop_dot ||
              operation == ir_binop_vector_extract ||
-- 
2.13.3

_______________________________________________
mesa-dev mailing list
mesa-dev@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/mesa-dev

Reply via email to