From b63cb15373bf384f1d644c4cfae0c60422cc3909 Mon Sep 17 00:00:00 2001 From: Jakub Jelinek <jakub@redhat.com> Date: Thu, 31 Oct 2013 14:59:07 +0100 Subject: [PATCH] * gcc.dg/vect/vect-align-3.c: New test. From-SVN: r204259 --- gcc/testsuite/ChangeLog | 2 + gcc/testsuite/gcc.dg/vect/vect-align-3.c | 54 ++++++++++++++++++++++++ 2 files changed, 56 insertions(+) create mode 100644 gcc/testsuite/gcc.dg/vect/vect-align-3.c diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog index 769209d795ac..261e2e2c8b4a 100644 --- a/gcc/testsuite/ChangeLog +++ b/gcc/testsuite/ChangeLog @@ -1,5 +1,7 @@ 2013-10-31 Jakub Jelinek <jakub@redhat.com> + * gcc.dg/vect/vect-align-3.c: New test. + * g++.dg/warn/pr33738.C (main): Initialize a2 again to make sure we warn about it already during VRP1 pass. diff --git a/gcc/testsuite/gcc.dg/vect/vect-align-3.c b/gcc/testsuite/gcc.dg/vect/vect-align-3.c new file mode 100644 index 000000000000..a8d3e485e6cc --- /dev/null +++ b/gcc/testsuite/gcc.dg/vect/vect-align-3.c @@ -0,0 +1,54 @@ +/* { dg-do compile } */ +/* { dg-require-effective-target vect_int } */ + +int a[2048]; + +void +f1 (int x, int y) +{ + int i; + x &= -256; + y &= -256; + for (i = x + 256; i < y; i++) + a[i]++; +} + +void +f2 (int x, int y) +{ + int i; + if (x & 31) + __builtin_unreachable (); + if (y & 31) + __builtin_unreachable (); + for (i = x + 256; i < x + y; i++) + a[i]++; +} + +void +f3 (int x, int y) +{ + int i; + if (x % 256) + __builtin_unreachable (); + if (y % 256) + __builtin_unreachable (); + for (i = x + 256; i < x + y; i++) + a[i]++; +} + +void +f4 (int x, int y) +{ + int i; + if ((x % 256) != 0) + __builtin_unreachable (); + if ((y % 256) != 0) + __builtin_unreachable (); + for (i = x + 256; i < x + y; i++) + a[i]++; +} + +/* { dg-final { scan-tree-dump-not "vect_do_peeling_for_loop_bound" "vect" } } */ +/* { dg-final { scan-tree-dump-not "loop peeled for vectorization" "vect" } } */ +/* { dg-final { cleanup-tree-dump "vect" } } */ -- GitLab