aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAndrew Pinski <apinski@cavium.com>2016-02-10 03:13:53 +0000
committerAndrew Pinski <pinskia@gcc.gnu.org>2016-02-09 19:13:53 -0800
commit0d99886f66d99a75e8f61435d819484676196861 (patch)
tree9d4a26f8cd98c64dba1a1f1058e3e3950497f456
parentde24ed7803caed57a54bb645ba17da893a4a507c (diff)
downloadgcc-0d99886f66d99a75e8f61435d819484676196861.zip
gcc-0d99886f66d99a75e8f61435d819484676196861.tar.gz
gcc-0d99886f66d99a75e8f61435d819484676196861.tar.bz2
re PR tree-optimization/69282 (aarch64/armhf ICE on SPEC2006 464.h264ref at -O3)
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
-rw-r--r--gcc/ChangeLog6
-rw-r--r--gcc/optabs-tree.c8
-rw-r--r--gcc/testsuite/ChangeLog5
-rw-r--r--gcc/testsuite/gcc.c-torture/compile/20160205-1.c8
4 files changed, 24 insertions, 3 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog
index 4e9dd7d..fed32be 100644
--- a/gcc/ChangeLog
+++ b/gcc/ChangeLog
@@ -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
diff --git a/gcc/optabs-tree.c b/gcc/optabs-tree.c
index a229b97..faac087 100644
--- a/gcc/optabs-tree.c
+++ b/gcc/optabs-tree.c
@@ -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),
diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog
index 3dad666..00e8d19 100644
--- a/gcc/testsuite/ChangeLog
+++ b/gcc/testsuite/ChangeLog
@@ -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
index 0000000..ea0440f
--- /dev/null
+++ b/gcc/testsuite/gcc.c-torture/compile/20160205-1.c
@@ -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;
+}