re PR tree-optimization/70372 (ICE: in wide_int_to_tree, at tree.c:1488 with -fno...
authorRichard Biener <rguenther@suse.de>
Thu, 24 Mar 2016 08:17:43 +0000 (08:17 +0000)
committerRichard Biener <rguenth@gcc.gnu.org>
Thu, 24 Mar 2016 08:17:43 +0000 (08:17 +0000)
2016-03-24  Richard Biener  <rguenther@suse.de>

PR tree-optimization/70372
* tree-ssa-reassoc.c (eliminate_plus_minus_pair): Use
build_all_ones_cst to also handle vector types correctly.

* gcc.dg/tree-ssa/pr70372.c: New testcase.

From-SVN: r234449

gcc/ChangeLog
gcc/testsuite/ChangeLog
gcc/testsuite/gcc.dg/tree-ssa/pr70372.c [new file with mode: 0644]
gcc/tree-ssa-reassoc.c

index 34bc72166e408c4eb299bc5852d4f81f5141d4f5..3c80e770d247bd67b1b560e2f16c5b3be7d24185 100644 (file)
@@ -1,3 +1,9 @@
+2016-03-24  Richard Biener  <rguenther@suse.de>
+
+       PR tree-optimization/70372
+       * tree-ssa-reassoc.c (eliminate_plus_minus_pair): Use
+       build_all_ones_cst to also handle vector types correctly.
+
 2016-03-23  Michael Meissner  <meissner@linux.vnet.ibm.com>
 
        PR target/70381
index 3a5cf65c2ab66cc8f27a28a949155e2ea6f6ab30..aa30b1e728244b2134f932dcdf12e8c41e3b3f65 100644 (file)
@@ -1,3 +1,8 @@
+2016-03-24  Richard Biener  <rguenther@suse.de>
+
+       PR tree-optimization/70372
+       * gcc.dg/tree-ssa/pr70372.c: New testcase.
+
 2016-03-23  Patrick Palka  <ppalka@gcc.gnu.org>
 
        PR c++/70347
diff --git a/gcc/testsuite/gcc.dg/tree-ssa/pr70372.c b/gcc/testsuite/gcc.dg/tree-ssa/pr70372.c
new file mode 100644 (file)
index 0000000..a6d18d2
--- /dev/null
@@ -0,0 +1,14 @@
+/* { dg-do compile } */
+/* { dg-options "-O -fno-tree-fre -w -Wno-psabi" } */
+
+typedef unsigned v2ti __attribute__ ((vector_size (32)));
+
+v2ti
+foo (v2ti u, v2ti v)
+{
+  u[0] >>= 0xf;
+  v ^= ~v;
+  v &= ~u;
+  v -= -u;
+  return v;
+}
index 0340df249301050690c6463db7ee633407a4fe11..d23dabde7b6b78f0e9d9d5b7f0aea99adcbe5c8c 100644 (file)
@@ -821,7 +821,7 @@ eliminate_plus_minus_pair (enum tree_code opcode,
            }
 
          ops->ordered_remove (i);
-         add_to_ops_vec (ops, build_int_cst_type (op_type, -1));
+         add_to_ops_vec (ops, build_all_ones_cst (op_type));
          ops->ordered_remove (currindex);
          reassociate_stats.ops_eliminated ++;