re PR tree-optimization/69282 (aarch64/armhf ICE on SPEC2006 464.h264ref at -O3)
authorAndrew Pinski <apinski@cavium.com>
Wed, 10 Feb 2016 03:13:53 +0000 (03:13 +0000)
committerAndrew Pinski <pinskia@gcc.gnu.org>
Wed, 10 Feb 2016 03:13:53 +0000 (19:13 -0800)
2016-02-09  Andrew Pinski  <apinski@cavium.com>

        PR tree-opt/69282
        * optabs-tree.c (expand_vec_cond_expr_p): Don't early return if
        get_vcond_mask_icode returns false.

2016-02-09  Andrew Pinski  <apinski@cavium.com>

        PR tree-opt/69282
        * gcc.c-torture/compile/20160205-1.c: New testcase.

From-SVN: r233261

gcc/ChangeLog
gcc/optabs-tree.c
gcc/testsuite/ChangeLog
gcc/testsuite/gcc.c-torture/compile/20160205-1.c [new file with mode: 0644]

index 4e9dd7d17cf61915f47993b5b16b47984240205e..fed32beda35a12f6cae5f8b8d78d37484d9ea9ca 100644 (file)
@@ -1,3 +1,9 @@
+2016-02-09  Andrew Pinski  <apinski@cavium.com>
+
+       PR tree-opt/69282
+       * optabs-tree.c (expand_vec_cond_expr_p): Don't early return if
+       get_vcond_mask_icode returns false.
+
 2016-02-09  Michael Meissner  <meissner@linux.vnet.ibm.com>
 
        PR target/68404
index a229b970b3bb653df1617cb310aa694c09bdce5a..faac087164120682cbbfa954180029cdd65964ab 100644 (file)
@@ -322,9 +322,11 @@ expand_vec_cond_expr_p (tree value_type, tree cmp_op_type)
 {
   machine_mode value_mode = TYPE_MODE (value_type);
   machine_mode cmp_op_mode = TYPE_MODE (cmp_op_type);
-  if (VECTOR_BOOLEAN_TYPE_P (cmp_op_type))
-    return get_vcond_mask_icode (TYPE_MODE (value_type),
-                                TYPE_MODE (cmp_op_type)) != CODE_FOR_nothing;
+  if (VECTOR_BOOLEAN_TYPE_P (cmp_op_type)
+      && get_vcond_mask_icode (TYPE_MODE (value_type),
+                              TYPE_MODE (cmp_op_type)) != CODE_FOR_nothing)
+    return true;
+
   if (GET_MODE_SIZE (value_mode) != GET_MODE_SIZE (cmp_op_mode)
       || GET_MODE_NUNITS (value_mode) != GET_MODE_NUNITS (cmp_op_mode)
       || get_vcond_icode (TYPE_MODE (value_type), TYPE_MODE (cmp_op_type),
index 3dad666bd3431395ed6cfd1585f957f6037b8f4c..00e8d1987239811a23a0e83617e65ba0d9741d88 100644 (file)
@@ -1,3 +1,8 @@
+2016-02-09  Andrew Pinski  <apinski@cavium.com>
+
+       PR tree-opt/69282
+       * gcc.c-torture/compile/20160205-1.c: New testcase.
+
 2016-02-09  Michael Meissner  <meissner@linux.vnet.ibm.com>
 
        PR target/68404
diff --git a/gcc/testsuite/gcc.c-torture/compile/20160205-1.c b/gcc/testsuite/gcc.c-torture/compile/20160205-1.c
new file mode 100644 (file)
index 0000000..ea0440f
--- /dev/null
@@ -0,0 +1,8 @@
+int a[32];
+int fn1(int d) {
+  int c = 1;
+  for (int b = 0; b < 32; b++)
+    if (a[b])
+      c = 0;
+  return c;
+}