tree-cfg.c (verify_gimple_assign_ternary): Check the first argument.
authorMarc Glisse <marc.glisse@inria.fr>
Sat, 4 Jul 2015 11:15:33 +0000 (13:15 +0200)
committerMarc Glisse <glisse@gcc.gnu.org>
Sat, 4 Jul 2015 11:15:33 +0000 (11:15 +0000)
2015-07-04  Marc Glisse  <marc.glisse@inria.fr>

* tree-cfg.c (verify_gimple_assign_ternary) <VEC_COND_EXPR>: Check
the first argument.

From-SVN: r225411

gcc/ChangeLog
gcc/tree-cfg.c

index 50f0a54d8fded5da04105e41ae47039bbddf6230..4f60a00e92efceee868c8b25bdbb5465392d6ae2 100644 (file)
@@ -1,3 +1,8 @@
+2015-07-04  Marc Glisse  <marc.glisse@inria.fr>
+
+       * tree-cfg.c (verify_gimple_assign_ternary) <VEC_COND_EXPR>: Check
+       the first argument.
+
 2015-07-03  Paolo Carlini  <paolo.carlini@oracle.com>
 
        * attribs.c (decl_attributes): Guard inform with the return value
index 94ed95751a914d58d74a08739bef82bc0dfba715..f47795a3cf294546e6acfc7c12ad7d0eed80228f 100644 (file)
@@ -4001,8 +4001,22 @@ verify_gimple_assign_ternary (gassign *stmt)
        }
       break;
 
-    case COND_EXPR:
     case VEC_COND_EXPR:
+      if (!VECTOR_INTEGER_TYPE_P (rhs1_type)
+         || TYPE_SIGN (rhs1_type) != SIGNED
+         || TYPE_SIZE (rhs1_type) != TYPE_SIZE (lhs_type)
+         || TYPE_VECTOR_SUBPARTS (rhs1_type)
+            != TYPE_VECTOR_SUBPARTS (lhs_type))
+       {
+         error ("the first argument of a VEC_COND_EXPR must be of a signed "
+                "integral vector type of the same size and number of "
+                "elements as the result");
+         debug_generic_expr (lhs_type);
+         debug_generic_expr (rhs1_type);
+         return true;
+       }
+      /* Fallthrough.  */
+    case COND_EXPR:
       if (!useless_type_conversion_p (lhs_type, rhs2_type)
          || !useless_type_conversion_p (lhs_type, rhs3_type))
        {