diff options
author | Jakub Jelinek <jakub@redhat.com> | 2020-09-18 15:05:53 +0200 |
---|---|---|
committer | Jakub Jelinek <jakub@redhat.com> | 2020-09-18 15:05:53 +0200 |
commit | 3d3fe967b0961cb59f5df03ae2a55d83dc4bbd34 (patch) | |
tree | ff18f576ddc0e1c2844afb2c3cfcbe528dad8c99 /gcc/testsuite | |
parent | 9c9b88fdcff3520b2c4fb520c5d3b422eaa9a72f (diff) | |
download | gcc-3d3fe967b0961cb59f5df03ae2a55d83dc4bbd34.zip gcc-3d3fe967b0961cb59f5df03ae2a55d83dc4bbd34.tar.gz gcc-3d3fe967b0961cb59f5df03ae2a55d83dc4bbd34.tar.bz2 |
testsuite: add another test for the rotate vectorization miscompilation
This time with short and char where the used mask used to be larger
than it should have been.
2020-09-18 Jakub Jelinek <jakub@redhat.com>
PR tree-optimization/97081
* gcc.dg/vect/pr97081-2.c: New test.
Diffstat (limited to 'gcc/testsuite')
-rw-r--r-- | gcc/testsuite/gcc.dg/vect/pr97081-2.c | 32 |
1 files changed, 32 insertions, 0 deletions
diff --git a/gcc/testsuite/gcc.dg/vect/pr97081-2.c b/gcc/testsuite/gcc.dg/vect/pr97081-2.c new file mode 100644 index 0000000..98ad3c3 --- /dev/null +++ b/gcc/testsuite/gcc.dg/vect/pr97081-2.c @@ -0,0 +1,32 @@ +/* PR tree-optimization/97081 */ + +#include "tree-vect.h" + +unsigned short s[1024]; +unsigned char c[1024]; + +__attribute__((noipa)) void +foo (int n) +{ + for (int i = 0; i < 1024; i++) + s[i] = (s[i] << n) | (s[i] >> (__SIZEOF_SHORT__ * __CHAR_BIT__ - n)); + for (int i = 0; i < 1024; i++) + c[i] = (c[i] << n) | (c[i] >> (__CHAR_BIT__ - n)); +} + +int +main () +{ + check_vect (); + for (int i = 0; i < 1024; i++) + { + s[i] = i; + c[i] = i; + } + foo (3); + for (int i = 0; i < 1024; i++) + if (s[i] != (unsigned short) ((i << 3) | (i >> (__SIZEOF_SHORT__ * __CHAR_BIT__ - 3))) + || c[i] != (unsigned char) ((((unsigned char) i) << 3) | (((unsigned char) i) >> (__CHAR_BIT__ - 3)))) + __builtin_abort (); + return 0; +} |