Replace several field comparisons with a single pointer comparison
authorIan Romanick <ian.d.romanick@intel.com>
Thu, 25 Mar 2010 00:53:53 +0000 (17:53 -0700)
committerIan Romanick <ian.d.romanick@intel.com>
Thu, 25 Mar 2010 00:53:53 +0000 (17:53 -0700)
The only way the specified type fields can match is if the types are the
same.  Previous tests (and assertions) have filtered away all other possible
cases.

ast_to_hir.cpp

index 5fe44ec..cb746ed 100644 (file)
@@ -151,10 +151,7 @@ arithmetic_result_type(const struct glsl_type *type_a,
     *      vector."
     */
    if (type_a->is_vector() && type_b->is_vector()) {
-      if (type_a->vector_elements == type_b->vector_elements)
-        return type_a;
-      else
-        return glsl_error_type;
+      return (type_a == type_b) ? type_a : glsl_error_type;
    }
 
    /* All of the combinations of <scalar, scalar>, <vector, scalar>,
@@ -183,12 +180,7 @@ arithmetic_result_type(const struct glsl_type *type_a,
     *      more detail how vectors and matrices are operated on."
     */
    if (! multiply) {
-      if (type_a->is_matrix() && type_b->is_matrix()
-         && (type_a->vector_elements == type_b->vector_elements)
-         && (type_a->matrix_rows == type_b->matrix_rows))
-        return type_a;
-      else
-        return glsl_error_type;
+      return (type_a == type_b) ? type_a : glsl_error_type;
    } else {
       if (type_a->is_matrix() && type_b->is_matrix()) {
         if (type_a->vector_elements == type_b->matrix_rows) {