diff options
author | Jakub Jelinek <jakub@redhat.com> | 2014-03-12 10:21:59 +0100 |
---|---|---|
committer | Jakub Jelinek <jakub@gcc.gnu.org> | 2014-03-12 10:21:59 +0100 |
commit | c888139c9aee51699484bf7e442b208a962773c8 (patch) | |
tree | 61cafcbb46414715fe191bd0dbf97127d27ff5b8 /gcc | |
parent | b24ca895d7a5e5d18782a230f133cd8346f00c11 (diff) | |
download | gcc-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/ChangeLog | 7 | ||||
-rw-r--r-- | gcc/testsuite/ChangeLog | 6 | ||||
-rw-r--r-- | gcc/testsuite/gcc.c-torture/compile/pr60502.c | 18 | ||||
-rw-r--r-- | gcc/tree-ssa-reassoc.c | 3 |
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); |