aboutsummaryrefslogtreecommitdiff
path: root/gcc
diff options
context:
space:
mode:
authorJakub Jelinek <jakub@redhat.com>2014-03-12 10:21:59 +0100
committerJakub Jelinek <jakub@gcc.gnu.org>2014-03-12 10:21:59 +0100
commitc888139c9aee51699484bf7e442b208a962773c8 (patch)
tree61cafcbb46414715fe191bd0dbf97127d27ff5b8 /gcc
parentb24ca895d7a5e5d18782a230f133cd8346f00c11 (diff)
downloadgcc-c888139c9aee51699484bf7e442b208a962773c8.zip
gcc-c888139c9aee51699484bf7e442b208a962773c8.tar.gz
gcc-c888139c9aee51699484bf7e442b208a962773c8.tar.bz2
re PR tree-optimization/60502 (ICE reassociation and vector types.)
PR tree-optimization/60502 * tree-ssa-reassoc.c (eliminate_not_pairs): Use build_all_ones_cst instead of build_low_bits_mask. * gcc.c-torture/compile/pr60502.c: New test. Co-Authored-By: Marc Glisse <marc.glisse@inria.fr> From-SVN: r208507
Diffstat (limited to 'gcc')
-rw-r--r--gcc/ChangeLog7
-rw-r--r--gcc/testsuite/ChangeLog6
-rw-r--r--gcc/testsuite/gcc.c-torture/compile/pr60502.c18
-rw-r--r--gcc/tree-ssa-reassoc.c3
4 files changed, 32 insertions, 2 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog
index c2bc1e3..446f519 100644
--- a/gcc/ChangeLog
+++ b/gcc/ChangeLog
@@ -1,4 +1,11 @@
2014-03-12 Jakub Jelinek <jakub@redhat.com>
+ Marc Glisse <marc.glisse@inria.fr>
+
+ PR tree-optimization/60502
+ * tree-ssa-reassoc.c (eliminate_not_pairs): Use build_all_ones_cst
+ instead of build_low_bits_mask.
+
+2014-03-12 Jakub Jelinek <jakub@redhat.com>
PR middle-end/60482
* tree-vrp.c (register_edge_assert_for_1): Don't add assert
diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog
index fe99d64..24d0d9a 100644
--- a/gcc/testsuite/ChangeLog
+++ b/gcc/testsuite/ChangeLog
@@ -1,4 +1,10 @@
2014-03-12 Jakub Jelinek <jakub@redhat.com>
+ Marc Glisse <marc.glisse@inria.fr>
+
+ PR tree-optimization/60502
+ * gcc.c-torture/compile/pr60502.c: New test.
+
+2014-03-12 Jakub Jelinek <jakub@redhat.com>
PR middle-end/60482
* gcc.dg/vect/pr60482.c: New test.
diff --git a/gcc/testsuite/gcc.c-torture/compile/pr60502.c b/gcc/testsuite/gcc.c-torture/compile/pr60502.c
new file mode 100644
index 0000000..8dd2de4
--- /dev/null
+++ b/gcc/testsuite/gcc.c-torture/compile/pr60502.c
@@ -0,0 +1,18 @@
+/* PR tree-optimization/60502 */
+
+typedef signed char v16i8 __attribute__ ((vector_size (16)));
+typedef unsigned char v16u8 __attribute__ ((vector_size (16)));
+
+void
+foo (v16i8 *x)
+{
+ v16i8 m1 = { -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1 };
+ *x |= *x ^ m1;
+}
+
+void
+bar (v16u8 *x)
+{
+ v16u8 m1 = { -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1 };
+ *x |= *x ^ m1;
+}
diff --git a/gcc/tree-ssa-reassoc.c b/gcc/tree-ssa-reassoc.c
index df8cca8..9928222 100644
--- a/gcc/tree-ssa-reassoc.c
+++ b/gcc/tree-ssa-reassoc.c
@@ -806,8 +806,7 @@ eliminate_not_pairs (enum tree_code opcode,
if (opcode == BIT_AND_EXPR)
oe->op = build_zero_cst (TREE_TYPE (oe->op));
else if (opcode == BIT_IOR_EXPR)
- oe->op = build_low_bits_mask (TREE_TYPE (oe->op),
- TYPE_PRECISION (TREE_TYPE (oe->op)));
+ oe->op = build_all_ones_cst (TREE_TYPE (oe->op));
reassociate_stats.ops_eliminated += ops->length () - 1;
ops->truncate (0);