aboutsummaryrefslogtreecommitdiff
path: root/gcc/testsuite/gcc.dg
diff options
context:
space:
mode:
Diffstat (limited to 'gcc/testsuite/gcc.dg')
-rw-r--r--gcc/testsuite/gcc.dg/c2y-generic-6.c11
-rw-r--r--gcc/testsuite/gcc.dg/c2y-generic-7.c15
-rw-r--r--gcc/testsuite/gcc.dg/ipa/ipcp-cb-spec1.c19
-rw-r--r--gcc/testsuite/gcc.dg/ipa/ipcp-cb-spec2.c21
-rw-r--r--gcc/testsuite/gcc.dg/ipa/ipcp-cb1.c25
-rw-r--r--gcc/testsuite/gcc.dg/tree-ssa/pr101024-1.c39
-rw-r--r--gcc/testsuite/gcc.dg/tree-ssa/pr110068-1.c22
-rw-r--r--gcc/testsuite/gcc.dg/vect/pr104116-ceil-div-2.c1
-rw-r--r--gcc/testsuite/gcc.dg/vect/pr104116-ceil-div-pow2.c1
-rw-r--r--gcc/testsuite/gcc.dg/vect/pr104116-ceil-div.c1
-rw-r--r--gcc/testsuite/gcc.dg/vect/pr104116-ceil-mod-2.c1
-rw-r--r--gcc/testsuite/gcc.dg/vect/pr104116-ceil-mod-pow2.c1
-rw-r--r--gcc/testsuite/gcc.dg/vect/pr104116-ceil-mod.c1
-rw-r--r--gcc/testsuite/gcc.dg/vect/pr104116-ceil-udiv-2.c1
-rw-r--r--gcc/testsuite/gcc.dg/vect/pr104116-ceil-udiv-pow2.c1
-rw-r--r--gcc/testsuite/gcc.dg/vect/pr104116-ceil-udiv.c1
-rw-r--r--gcc/testsuite/gcc.dg/vect/pr104116-ceil-umod-2.c1
-rw-r--r--gcc/testsuite/gcc.dg/vect/pr104116-ceil-umod-pow2.c1
-rw-r--r--gcc/testsuite/gcc.dg/vect/pr104116-ceil-umod.c1
-rw-r--r--gcc/testsuite/gcc.dg/vect/pr104116-floor-div-2.c1
-rw-r--r--gcc/testsuite/gcc.dg/vect/pr104116-floor-div-pow2.c1
-rw-r--r--gcc/testsuite/gcc.dg/vect/pr104116-floor-div.c1
-rw-r--r--gcc/testsuite/gcc.dg/vect/pr104116-floor-mod-2.c1
-rw-r--r--gcc/testsuite/gcc.dg/vect/pr104116-floor-mod-pow2.c1
-rw-r--r--gcc/testsuite/gcc.dg/vect/pr104116-floor-mod.c1
-rw-r--r--gcc/testsuite/gcc.dg/vect/pr104116-round-div-2.c1
-rw-r--r--gcc/testsuite/gcc.dg/vect/pr104116-round-div-pow2.c1
-rw-r--r--gcc/testsuite/gcc.dg/vect/pr104116-round-div.c1
-rw-r--r--gcc/testsuite/gcc.dg/vect/pr104116-round-mod-2.c1
-rw-r--r--gcc/testsuite/gcc.dg/vect/pr104116-round-mod-pow2.c1
-rw-r--r--gcc/testsuite/gcc.dg/vect/pr104116-round-mod.c1
-rw-r--r--gcc/testsuite/gcc.dg/vect/pr104116-round-udiv-2.c1
-rw-r--r--gcc/testsuite/gcc.dg/vect/pr104116-round-udiv-pow2.c1
-rw-r--r--gcc/testsuite/gcc.dg/vect/pr104116-round-udiv.c1
-rw-r--r--gcc/testsuite/gcc.dg/vect/pr104116-round-umod-2.c1
-rw-r--r--gcc/testsuite/gcc.dg/vect/pr104116-round-umod-pow2.c1
-rw-r--r--gcc/testsuite/gcc.dg/vect/pr104116-round-umod.c1
-rw-r--r--gcc/testsuite/gcc.dg/vect/pr104116.h9
-rw-r--r--gcc/testsuite/gcc.dg/vect/vect-pr122370.c17
-rw-r--r--gcc/testsuite/gcc.dg/vect/vect-pr122371.c20
-rw-r--r--gcc/testsuite/gcc.dg/vect/vect-reduc-bool-9.c27
-rw-r--r--gcc/testsuite/gcc.dg/vect/vect-reduc-chain-4.c31
-rw-r--r--gcc/testsuite/gcc.dg/vect/vect-reduc-chain-5.c31
43 files changed, 247 insertions, 70 deletions
diff --git a/gcc/testsuite/gcc.dg/c2y-generic-6.c b/gcc/testsuite/gcc.dg/c2y-generic-6.c
new file mode 100644
index 0000000..7220d94
--- /dev/null
+++ b/gcc/testsuite/gcc.dg/c2y-generic-6.c
@@ -0,0 +1,11 @@
+/* { dg-do "compile" } */
+/* { dg-options "-std=c2y -Wpedantic" } */
+
+void f()
+{
+ _Generic(1, int[*]: 1, default: 0);
+ _Generic(1, int(*)[*]: 1, default: 0);
+ _Generic(1, int[sizeof(int[*])]: 1, default: 0); /* { dg-warning "not in a declaration" } */
+ _Generic(1, struct { int a[*]; }: 1, default: 0); /* { dg-warning "variably modified" } */
+}
+
diff --git a/gcc/testsuite/gcc.dg/c2y-generic-7.c b/gcc/testsuite/gcc.dg/c2y-generic-7.c
new file mode 100644
index 0000000..6ca046c
--- /dev/null
+++ b/gcc/testsuite/gcc.dg/c2y-generic-7.c
@@ -0,0 +1,15 @@
+/* { dg-do "run" } */
+/* { dg-options "-std=c2y" } */
+
+int main()
+{
+ int n = 1;
+ int a[1];
+ _Generic(typeof(a), int[n++]: 0);
+ float b[1];
+ _Generic(typeof(b), int[n++]: 0, default: 1);
+ if (n != 1)
+ __builtin_abort();
+ return 0;
+}
+
diff --git a/gcc/testsuite/gcc.dg/ipa/ipcp-cb-spec1.c b/gcc/testsuite/gcc.dg/ipa/ipcp-cb-spec1.c
deleted file mode 100644
index a85e623..0000000
--- a/gcc/testsuite/gcc.dg/ipa/ipcp-cb-spec1.c
+++ /dev/null
@@ -1,19 +0,0 @@
-/* Test that GOMP_task is special cased when cpyfn is NULL. */
-
-/* { dg-do run } */
-/* { dg-options "-O3 -fopenmp -flto -std=gnu99 -fdump-ipa-cp-details" } */
-/* { dg-require-effective-target fopenmp } */
-/* { dg-require-effective-target lto } */
-
-void test(int c) {
- for (int i = 0; i < c; i++)
- if (!__builtin_constant_p(c))
- __builtin_abort();
-}
-int main() {
-#pragma omp task
- test(7);
- return 0;
-}
-
-/* { dg-final { scan-wpa-ipa-dump "Creating a specialized node of main._omp_fn" "cp" } } */
diff --git a/gcc/testsuite/gcc.dg/ipa/ipcp-cb-spec2.c b/gcc/testsuite/gcc.dg/ipa/ipcp-cb-spec2.c
deleted file mode 100644
index 01d7425..0000000
--- a/gcc/testsuite/gcc.dg/ipa/ipcp-cb-spec2.c
+++ /dev/null
@@ -1,21 +0,0 @@
-/* Check that GOMP_task doesn't produce callback edges when cpyfn is not
- NULL. */
-
-/* { dg-do run } */
-/* { dg-options "-O3 -fopenmp -flto -std=gnu99 -fdump-ipa-cp-details" } */
-/* { dg-require-effective-target fopenmp } */
-/* { dg-require-effective-target lto } */
-
-void test(int *a) {
- for (int i = 0; i < 100; i++) {
- a[i] = i;
- }
-}
-int main() {
- int a[100];
- __builtin_memset (a, 0, sizeof (a));
- #pragma omp task
- test (a);
-}
-
-/* { dg-final { scan-ipa-dump-not "Created callback edge" "cp" } } */
diff --git a/gcc/testsuite/gcc.dg/ipa/ipcp-cb1.c b/gcc/testsuite/gcc.dg/ipa/ipcp-cb1.c
deleted file mode 100644
index 3418b5d..0000000
--- a/gcc/testsuite/gcc.dg/ipa/ipcp-cb1.c
+++ /dev/null
@@ -1,25 +0,0 @@
-/* Test that we can propagate constants into outlined OpenMP kernels.
- This tests the underlying callback attribute and its related edges. */
-
-/* { dg-do run } */
-/* { dg-options "-O3 -fopenmp -flto -std=gnu99 -fdump-ipa-cp-details" } */
-/* { dg-require-effective-target fopenmp } */
-/* { dg-require-effective-target lto } */
-
-int a[100];
-void test(int c) {
-#pragma omp parallel for
- for (int i = 0; i < c; i++) {
- if (!__builtin_constant_p(c)) {
- __builtin_abort();
- }
- a[i] = i;
- }
-}
-int main() {
- test(100);
- return a[5] - 5;
-}
-
-/* { dg-final { scan-wpa-ipa-dump "Creating a specialized node of test._omp_fn" "cp" } } */
-/* { dg-final { scan-wpa-ipa-dump "Aggregate replacements: 0\\\[0]=100\\(by_ref\\)" "cp" } } */
diff --git a/gcc/testsuite/gcc.dg/tree-ssa/pr101024-1.c b/gcc/testsuite/gcc.dg/tree-ssa/pr101024-1.c
new file mode 100644
index 0000000..14379bf
--- /dev/null
+++ b/gcc/testsuite/gcc.dg/tree-ssa/pr101024-1.c
@@ -0,0 +1,39 @@
+/* PR tree-optimization/95699 */
+/* PR tree-optimization/101024 */
+/* { dg-do compile } */
+/* { dg-options "-O2 -fdump-tree-optimized -fdump-tree-phiopt1" } */
+unsigned long long
+f2 (unsigned long long x)
+{
+ if (x < 0x8000000000000000ULL)
+ x = 0x8000000000000000ULL;
+ else
+ {
+ if (x >= 0x8000000000000023ULL)
+ x = 0x8000000000000023ULL;
+ }
+ return x;
+}
+unsigned long long
+f1 (unsigned long long x)
+{
+ if (x >= 100)
+ {
+ if (x >= 0x8000000000000000ULL)
+ x = 0x8000000000000000ULL;
+ }
+ else
+ x = 100;
+ return x;
+}
+/* f2: */
+/* { dg-final { scan-tree-dump "MIN_EXPR <\[^>\n\r]*9223372036854775843>" "optimized" } } */
+/* { dg-final { scan-tree-dump "MAX_EXPR <\[^>\n\r]*9223372036854775808>" "optimized" } } */
+/* { dg-final { scan-tree-dump "MIN_EXPR <\[^>\n\r]*9223372036854775843>" "phiopt1" } } */
+/* { dg-final { scan-tree-dump "MAX_EXPR <\[^>\n\r]*9223372036854775808>" "phiopt1" } } */
+
+/* f1: */
+/* { dg-final { scan-tree-dump "MIN_EXPR <\[^>\n\r]*9223372036854775808>" "optimized" } } */
+/* { dg-final { scan-tree-dump "MAX_EXPR <\[^>\n\r]*100>" "optimized" } } */
+/* { dg-final { scan-tree-dump "MIN_EXPR <\[^>\n\r]*9223372036854775808>" "phiopt1" } } */
+/* { dg-final { scan-tree-dump "MAX_EXPR <\[^>\n\r]*100>" "phiopt1" } } */
diff --git a/gcc/testsuite/gcc.dg/tree-ssa/pr110068-1.c b/gcc/testsuite/gcc.dg/tree-ssa/pr110068-1.c
new file mode 100644
index 0000000..df88553
--- /dev/null
+++ b/gcc/testsuite/gcc.dg/tree-ssa/pr110068-1.c
@@ -0,0 +1,22 @@
+/* PR tree-optimization/95699 */
+/* PR tree-optimization/110068 */
+/* { dg-do compile } */
+/* { dg-options "-O2 -fdump-tree-optimized -fdump-tree-phiopt1" } */
+/* { dg-final { scan-tree-dump-times "MIN_EXPR " 2 "phiopt1" } } */
+
+#define min1(x,y) ((x) < (y) ? (x) : (y))
+unsigned
+f1 (unsigned x)
+{
+ return min1(x, 1U<<(sizeof(x)*8-1));
+}
+unsigned
+f5 (unsigned x)
+{
+ bool t = x >= 1U<<(sizeof(x)*8-1);
+ if (!t)
+ ;
+ else
+ x = 1U<<(sizeof(x)*8-1);
+ return x;
+}
diff --git a/gcc/testsuite/gcc.dg/vect/pr104116-ceil-div-2.c b/gcc/testsuite/gcc.dg/vect/pr104116-ceil-div-2.c
index 7078776..cc0cb45 100644
--- a/gcc/testsuite/gcc.dg/vect/pr104116-ceil-div-2.c
+++ b/gcc/testsuite/gcc.dg/vect/pr104116-ceil-div-2.c
@@ -16,6 +16,7 @@ int main (void)
int *a = (int*)&arr;
init_arr(a, N);
div(a);
+ #pragma GCC novector
for (int i=0; i<N; i++)
{
int expected = cl_div (i - N/2, 2);
diff --git a/gcc/testsuite/gcc.dg/vect/pr104116-ceil-div-pow2.c b/gcc/testsuite/gcc.dg/vect/pr104116-ceil-div-pow2.c
index 7aa9ae8..8abd353 100644
--- a/gcc/testsuite/gcc.dg/vect/pr104116-ceil-div-pow2.c
+++ b/gcc/testsuite/gcc.dg/vect/pr104116-ceil-div-pow2.c
@@ -17,6 +17,7 @@ int main (void)
int *a = (int*)&arr;
init_arr(a, N);
div(a);
+ #pragma GCC novector
for (int i=0; i<N; i++)
{
int expected = cl_div (i - N/2, 8);
diff --git a/gcc/testsuite/gcc.dg/vect/pr104116-ceil-div.c b/gcc/testsuite/gcc.dg/vect/pr104116-ceil-div.c
index 6f903ff..e4a8d30 100644
--- a/gcc/testsuite/gcc.dg/vect/pr104116-ceil-div.c
+++ b/gcc/testsuite/gcc.dg/vect/pr104116-ceil-div.c
@@ -17,6 +17,7 @@ int main (void)
int *a = (int*)&arr;
init_arr(a, N);
div(a);
+ #pragma GCC novector
for (int i=0; i<N; i++)
{
int expected = cl_div (i - N/2, 19);
diff --git a/gcc/testsuite/gcc.dg/vect/pr104116-ceil-mod-2.c b/gcc/testsuite/gcc.dg/vect/pr104116-ceil-mod-2.c
index ee6dfb9..6e559ab 100644
--- a/gcc/testsuite/gcc.dg/vect/pr104116-ceil-mod-2.c
+++ b/gcc/testsuite/gcc.dg/vect/pr104116-ceil-mod-2.c
@@ -17,6 +17,7 @@ int main (void)
int *a = (int*)&arr;
init_arr(a, N);
div(a);
+ #pragma GCC novector
for (int i=0; i<N; i++)
{
int expected = cl_mod (i - N/2, 2);
diff --git a/gcc/testsuite/gcc.dg/vect/pr104116-ceil-mod-pow2.c b/gcc/testsuite/gcc.dg/vect/pr104116-ceil-mod-pow2.c
index de409ea..9fdbf27 100644
--- a/gcc/testsuite/gcc.dg/vect/pr104116-ceil-mod-pow2.c
+++ b/gcc/testsuite/gcc.dg/vect/pr104116-ceil-mod-pow2.c
@@ -17,6 +17,7 @@ int main (void)
unsigned int *a = (unsigned int*)&arr;
init_arr(a, N);
div(a);
+ #pragma GCC novector
for (int i=0; i<N; i++)
{
unsigned int expected = cl_mod (i - N/2, 8);
diff --git a/gcc/testsuite/gcc.dg/vect/pr104116-ceil-mod.c b/gcc/testsuite/gcc.dg/vect/pr104116-ceil-mod.c
index f2ba936..3f85218 100644
--- a/gcc/testsuite/gcc.dg/vect/pr104116-ceil-mod.c
+++ b/gcc/testsuite/gcc.dg/vect/pr104116-ceil-mod.c
@@ -17,6 +17,7 @@ int main (void)
int *a = (int*)&arr;
init_arr(a, N);
div(a);
+ #pragma GCC novector
for (int i=0; i<N; i++)
{
int expected = cl_mod (i - N/2, 19);
diff --git a/gcc/testsuite/gcc.dg/vect/pr104116-ceil-udiv-2.c b/gcc/testsuite/gcc.dg/vect/pr104116-ceil-udiv-2.c
index db1f797..d8365c0 100644
--- a/gcc/testsuite/gcc.dg/vect/pr104116-ceil-udiv-2.c
+++ b/gcc/testsuite/gcc.dg/vect/pr104116-ceil-udiv-2.c
@@ -16,6 +16,7 @@ int main (void)
unsigned int *ua = (unsigned int*)&uarr;
init_uarr(ua, N);
udiv(ua);
+ #pragma GCC novector
for (int i=0; i<N; i++)
{
unsigned int expected = cl_udiv (0xf0000000 + i, 2);
diff --git a/gcc/testsuite/gcc.dg/vect/pr104116-ceil-udiv-pow2.c b/gcc/testsuite/gcc.dg/vect/pr104116-ceil-udiv-pow2.c
index 06b4257..389b6c3 100644
--- a/gcc/testsuite/gcc.dg/vect/pr104116-ceil-udiv-pow2.c
+++ b/gcc/testsuite/gcc.dg/vect/pr104116-ceil-udiv-pow2.c
@@ -16,6 +16,7 @@ int main (void)
unsigned int *ua = (unsigned int*)&uarr;
init_uarr(ua, N);
udiv(ua);
+ #pragma GCC novector
for (int i=0; i<N; i++)
{
unsigned int expected = cl_udiv (0xf0000000 + i, 8);
diff --git a/gcc/testsuite/gcc.dg/vect/pr104116-ceil-udiv.c b/gcc/testsuite/gcc.dg/vect/pr104116-ceil-udiv.c
index ef6e856..54aa4fb 100644
--- a/gcc/testsuite/gcc.dg/vect/pr104116-ceil-udiv.c
+++ b/gcc/testsuite/gcc.dg/vect/pr104116-ceil-udiv.c
@@ -16,6 +16,7 @@ int main (void)
unsigned int *ua = (unsigned int*)&uarr;
init_uarr(ua, N);
udiv(ua);
+ #pragma GCC novector
for (int i=0; i<N; i++)
{
unsigned int expected = cl_udiv (0xf0000000 + i, 19);
diff --git a/gcc/testsuite/gcc.dg/vect/pr104116-ceil-umod-2.c b/gcc/testsuite/gcc.dg/vect/pr104116-ceil-umod-2.c
index 2d0a5db..190b805 100644
--- a/gcc/testsuite/gcc.dg/vect/pr104116-ceil-umod-2.c
+++ b/gcc/testsuite/gcc.dg/vect/pr104116-ceil-umod-2.c
@@ -17,6 +17,7 @@ int main (void)
unsigned int *a = (unsigned int*)&uarr;
init_uarr(a, N);
mod(a);
+ #pragma GCC novector
for (int i=0; i<N; i++)
{
unsigned int expected = cl_umod (0xf0000000 + i, 2);
diff --git a/gcc/testsuite/gcc.dg/vect/pr104116-ceil-umod-pow2.c b/gcc/testsuite/gcc.dg/vect/pr104116-ceil-umod-pow2.c
index 2d0a5db..190b805 100644
--- a/gcc/testsuite/gcc.dg/vect/pr104116-ceil-umod-pow2.c
+++ b/gcc/testsuite/gcc.dg/vect/pr104116-ceil-umod-pow2.c
@@ -17,6 +17,7 @@ int main (void)
unsigned int *a = (unsigned int*)&uarr;
init_uarr(a, N);
mod(a);
+ #pragma GCC novector
for (int i=0; i<N; i++)
{
unsigned int expected = cl_umod (0xf0000000 + i, 2);
diff --git a/gcc/testsuite/gcc.dg/vect/pr104116-ceil-umod.c b/gcc/testsuite/gcc.dg/vect/pr104116-ceil-umod.c
index 949a509..632fd46 100644
--- a/gcc/testsuite/gcc.dg/vect/pr104116-ceil-umod.c
+++ b/gcc/testsuite/gcc.dg/vect/pr104116-ceil-umod.c
@@ -17,6 +17,7 @@ int main (void)
unsigned int *a = (unsigned int*)&uarr;
init_uarr(a, N);
mod(a);
+ #pragma GCC novector
for (int i=0; i<N; i++)
{
unsigned int expected = cl_umod (0xf0000000 + i, 19);
diff --git a/gcc/testsuite/gcc.dg/vect/pr104116-floor-div-2.c b/gcc/testsuite/gcc.dg/vect/pr104116-floor-div-2.c
index d93e051..b9db0d2 100644
--- a/gcc/testsuite/gcc.dg/vect/pr104116-floor-div-2.c
+++ b/gcc/testsuite/gcc.dg/vect/pr104116-floor-div-2.c
@@ -16,6 +16,7 @@ int main (void)
int * a = (int*)&arr;
init_arr(a, N);
div_2(a);
+ #pragma GCC novector
for (int i=0; i<N; i++)
{
int expected = fl_div (i - N/2, 2);
diff --git a/gcc/testsuite/gcc.dg/vect/pr104116-floor-div-pow2.c b/gcc/testsuite/gcc.dg/vect/pr104116-floor-div-pow2.c
index 9e986a7..5000c29 100644
--- a/gcc/testsuite/gcc.dg/vect/pr104116-floor-div-pow2.c
+++ b/gcc/testsuite/gcc.dg/vect/pr104116-floor-div-pow2.c
@@ -16,6 +16,7 @@ int main (void)
int * a = (int*)&arr;
init_arr(a, N);
div_2(a);
+ #pragma GCC novector
for (int i=0; i<N; i++)
{
int expected = fl_div (i - N/2, 8);
diff --git a/gcc/testsuite/gcc.dg/vect/pr104116-floor-div.c b/gcc/testsuite/gcc.dg/vect/pr104116-floor-div.c
index 89dd270..ed34249 100644
--- a/gcc/testsuite/gcc.dg/vect/pr104116-floor-div.c
+++ b/gcc/testsuite/gcc.dg/vect/pr104116-floor-div.c
@@ -16,6 +16,7 @@ int main (void)
int * a = (int*)&arr;
init_arr(a, N);
div_2(a);
+ #pragma GCC novector
for (int i=0; i<N; i++)
{
int expected = fl_div (i - N/2, 19);
diff --git a/gcc/testsuite/gcc.dg/vect/pr104116-floor-mod-2.c b/gcc/testsuite/gcc.dg/vect/pr104116-floor-mod-2.c
index 0c5c162..62995bb 100644
--- a/gcc/testsuite/gcc.dg/vect/pr104116-floor-mod-2.c
+++ b/gcc/testsuite/gcc.dg/vect/pr104116-floor-mod-2.c
@@ -16,6 +16,7 @@ int main (void)
int * a = (int*)&arr;
init_arr(a, N);
mod(a);
+ #pragma GCC novector
for (int i=0; i<N; i++)
{
int expected = fl_mod (i - N/2, 2);
diff --git a/gcc/testsuite/gcc.dg/vect/pr104116-floor-mod-pow2.c b/gcc/testsuite/gcc.dg/vect/pr104116-floor-mod-pow2.c
index f3de145..b92243d 100644
--- a/gcc/testsuite/gcc.dg/vect/pr104116-floor-mod-pow2.c
+++ b/gcc/testsuite/gcc.dg/vect/pr104116-floor-mod-pow2.c
@@ -16,6 +16,7 @@ int main (void)
int * a = (int*)&arr;
init_arr(a, N);
mod(a);
+ #pragma GCC novector
for (int i=0; i<N; i++)
{
int expected = fl_mod (i - N/2, 8);
diff --git a/gcc/testsuite/gcc.dg/vect/pr104116-floor-mod.c b/gcc/testsuite/gcc.dg/vect/pr104116-floor-mod.c
index 3e6bbe9..63843b9 100644
--- a/gcc/testsuite/gcc.dg/vect/pr104116-floor-mod.c
+++ b/gcc/testsuite/gcc.dg/vect/pr104116-floor-mod.c
@@ -16,6 +16,7 @@ int main (void)
int * a = (int*)&arr;
init_arr(a, N);
mod(a);
+ #pragma GCC novector
for (int i=0; i<N; i++)
{
int expected = fl_mod (i - N/2, 19);
diff --git a/gcc/testsuite/gcc.dg/vect/pr104116-round-div-2.c b/gcc/testsuite/gcc.dg/vect/pr104116-round-div-2.c
index c242ccb..c72866a 100644
--- a/gcc/testsuite/gcc.dg/vect/pr104116-round-div-2.c
+++ b/gcc/testsuite/gcc.dg/vect/pr104116-round-div-2.c
@@ -16,6 +16,7 @@ int main (void)
int * a = (int*)&arr;
init_arr(a, N);
div(a);
+ #pragma GCC novector
for (int i=0; i<N; i++)
{
int expected = rd_div (i - N/2, 2);
diff --git a/gcc/testsuite/gcc.dg/vect/pr104116-round-div-pow2.c b/gcc/testsuite/gcc.dg/vect/pr104116-round-div-pow2.c
index 365c2c59..9e3e1ed 100644
--- a/gcc/testsuite/gcc.dg/vect/pr104116-round-div-pow2.c
+++ b/gcc/testsuite/gcc.dg/vect/pr104116-round-div-pow2.c
@@ -16,6 +16,7 @@ int main (void)
int * a = (int*)&arr;
init_arr(a, N);
div(a);
+ #pragma GCC novector
for (int i=0; i<N; i++)
{
int expected = rd_div (i - N/2, 8);
diff --git a/gcc/testsuite/gcc.dg/vect/pr104116-round-div.c b/gcc/testsuite/gcc.dg/vect/pr104116-round-div.c
index 5c377d1..5dd0f37 100644
--- a/gcc/testsuite/gcc.dg/vect/pr104116-round-div.c
+++ b/gcc/testsuite/gcc.dg/vect/pr104116-round-div.c
@@ -16,6 +16,7 @@ int main (void)
int * a = (int*)&arr;
init_arr(a, N);
div(a);
+ #pragma GCC novector
for (int i=0; i<N; i++)
{
int expected = rd_div (i - N/2, 19);
diff --git a/gcc/testsuite/gcc.dg/vect/pr104116-round-mod-2.c b/gcc/testsuite/gcc.dg/vect/pr104116-round-mod-2.c
index 6430b3e..fe8f8bb 100644
--- a/gcc/testsuite/gcc.dg/vect/pr104116-round-mod-2.c
+++ b/gcc/testsuite/gcc.dg/vect/pr104116-round-mod-2.c
@@ -16,6 +16,7 @@ int main (void)
int * a = (int*)&arr;
init_arr(a, N);
mod(a);
+ #pragma GCC novector
for (int i=0; i<N; i++)
{
int expected = rd_mod (i - N/2, 2);
diff --git a/gcc/testsuite/gcc.dg/vect/pr104116-round-mod-pow2.c b/gcc/testsuite/gcc.dg/vect/pr104116-round-mod-pow2.c
index 46c1789..cd3bbda 100644
--- a/gcc/testsuite/gcc.dg/vect/pr104116-round-mod-pow2.c
+++ b/gcc/testsuite/gcc.dg/vect/pr104116-round-mod-pow2.c
@@ -16,6 +16,7 @@ int main (void)
int * a = (int*)&arr;
init_arr(a, N);
mod(a);
+ #pragma GCC novector
for (int i=0; i<N; i++)
{
int expected = rd_mod (i - N/2, 8);
diff --git a/gcc/testsuite/gcc.dg/vect/pr104116-round-mod.c b/gcc/testsuite/gcc.dg/vect/pr104116-round-mod.c
index e7ca44e..e617623 100644
--- a/gcc/testsuite/gcc.dg/vect/pr104116-round-mod.c
+++ b/gcc/testsuite/gcc.dg/vect/pr104116-round-mod.c
@@ -16,6 +16,7 @@ int main (void)
int * a = (int*)&arr;
init_arr(a, N);
mod(a);
+ #pragma GCC novector
for (int i=0; i<N; i++)
{
int expected = rd_mod (i - N/2, 19);
diff --git a/gcc/testsuite/gcc.dg/vect/pr104116-round-udiv-2.c b/gcc/testsuite/gcc.dg/vect/pr104116-round-udiv-2.c
index 4d42f4e..de5e0a4 100644
--- a/gcc/testsuite/gcc.dg/vect/pr104116-round-udiv-2.c
+++ b/gcc/testsuite/gcc.dg/vect/pr104116-round-udiv-2.c
@@ -16,6 +16,7 @@ int main (void)
unsigned int * a = (unsigned int*)&uarr;
init_uarr(a, N);
div(a);
+ #pragma GCC novector
for (unsigned int i=0; i<N; i++)
{
unsigned int expected = rd_udiv (0xf0000000 + i, 2);
diff --git a/gcc/testsuite/gcc.dg/vect/pr104116-round-udiv-pow2.c b/gcc/testsuite/gcc.dg/vect/pr104116-round-udiv-pow2.c
index 137b249..a802b97 100644
--- a/gcc/testsuite/gcc.dg/vect/pr104116-round-udiv-pow2.c
+++ b/gcc/testsuite/gcc.dg/vect/pr104116-round-udiv-pow2.c
@@ -16,6 +16,7 @@ int main (void)
unsigned int * a = (unsigned int*)&uarr;
init_uarr(a, N);
div(a);
+ #pragma GCC novector
for (unsigned int i=0; i<N; i++)
{
unsigned int expected = rd_udiv (0xf0000000 + i, 8);
diff --git a/gcc/testsuite/gcc.dg/vect/pr104116-round-udiv.c b/gcc/testsuite/gcc.dg/vect/pr104116-round-udiv.c
index 183a930..7d5db92 100644
--- a/gcc/testsuite/gcc.dg/vect/pr104116-round-udiv.c
+++ b/gcc/testsuite/gcc.dg/vect/pr104116-round-udiv.c
@@ -16,6 +16,7 @@ int main (void)
unsigned int * a = (unsigned int*)&uarr;
init_uarr(a, N);
div(a);
+ #pragma GCC novector
for (unsigned int i=0; i<N; i++)
{
unsigned int expected = rd_udiv (0xf0000000 + i, 19);
diff --git a/gcc/testsuite/gcc.dg/vect/pr104116-round-umod-2.c b/gcc/testsuite/gcc.dg/vect/pr104116-round-umod-2.c
index f321e0e..155b26a 100644
--- a/gcc/testsuite/gcc.dg/vect/pr104116-round-umod-2.c
+++ b/gcc/testsuite/gcc.dg/vect/pr104116-round-umod-2.c
@@ -16,6 +16,7 @@ int main (void)
unsigned int * a = (unsigned int*)&uarr;
init_uarr(a, N);
mod(a);
+ #pragma GCC novector
for (unsigned int i=0; i<N; i++)
{
unsigned int expected = rd_umod (0xf0000000 + i, 2);
diff --git a/gcc/testsuite/gcc.dg/vect/pr104116-round-umod-pow2.c b/gcc/testsuite/gcc.dg/vect/pr104116-round-umod-pow2.c
index 041ecd1..1b4911a 100644
--- a/gcc/testsuite/gcc.dg/vect/pr104116-round-umod-pow2.c
+++ b/gcc/testsuite/gcc.dg/vect/pr104116-round-umod-pow2.c
@@ -16,6 +16,7 @@ int main (void)
unsigned int * a = (unsigned int*)&uarr;
init_uarr(a, N);
mod(a);
+ #pragma GCC novector
for (unsigned int i=0; i<N; i++)
{
unsigned int expected = rd_umod (0xf0000000 + i, 8);
diff --git a/gcc/testsuite/gcc.dg/vect/pr104116-round-umod.c b/gcc/testsuite/gcc.dg/vect/pr104116-round-umod.c
index b5ddad1..3db289e 100644
--- a/gcc/testsuite/gcc.dg/vect/pr104116-round-umod.c
+++ b/gcc/testsuite/gcc.dg/vect/pr104116-round-umod.c
@@ -16,6 +16,7 @@ int main (void)
unsigned int * a = (unsigned int*)&uarr;
init_uarr(a, N);
mod(a);
+ #pragma GCC novector
for (unsigned int i=0; i<N; i++)
{
unsigned int expected = rd_umod (0xf0000000 + i, 19);
diff --git a/gcc/testsuite/gcc.dg/vect/pr104116.h b/gcc/testsuite/gcc.dg/vect/pr104116.h
index 6f14e4b..c097353 100644
--- a/gcc/testsuite/gcc.dg/vect/pr104116.h
+++ b/gcc/testsuite/gcc.dg/vect/pr104116.h
@@ -82,17 +82,17 @@ NAME (unsigned int * a) \
#define N 1024
int arr[N];
-__attribute__((optimize("O0")))
void init_arr (int *a, int n)
{
- for (int i=0; i<n; i++)
- a[i] = i - n/2;
+ #pragma GCC novector
+ for (int i=0; i<n; i++)
+ a[i] = i - n/2;
}
unsigned int uarr[N];
-__attribute__((optimize("O0")))
void init_uarr (unsigned int *a, int n)
{
+ #pragma GCC novector
for (unsigned int i=0; i<n; i++)
a[i] = 0xf0000000 + i;
}
@@ -141,7 +141,6 @@ int fl_div (int x, int y)
return q;
}
-
int fl_mod (int x, int y)
{
int r = x % y;
diff --git a/gcc/testsuite/gcc.dg/vect/vect-pr122370.c b/gcc/testsuite/gcc.dg/vect/vect-pr122370.c
new file mode 100644
index 0000000..8e536bf
--- /dev/null
+++ b/gcc/testsuite/gcc.dg/vect/vect-pr122370.c
@@ -0,0 +1,17 @@
+/* { dg-do compile } */
+/* { dg-additional-options "-mavx512vl -mavx512bw" { target { avx512vl && avx512bw } } } */
+
+bool f(bool splat, bool swizzle_splat,
+ int *elems, int length)
+{
+ int input = elems[0];
+ for (int i = 0; i < length; i++)
+ {
+ if (input != elems[i])
+ {
+ splat = false;
+ swizzle_splat = false;
+ }
+ }
+ return (splat && swizzle_splat);
+}
diff --git a/gcc/testsuite/gcc.dg/vect/vect-pr122371.c b/gcc/testsuite/gcc.dg/vect/vect-pr122371.c
new file mode 100644
index 0000000..fd03b84
--- /dev/null
+++ b/gcc/testsuite/gcc.dg/vect/vect-pr122371.c
@@ -0,0 +1,20 @@
+/* { dg-do compile } */
+
+struct {
+ double lsum;
+} AnalyzeSamples_rgData;
+
+float *AnalyzeSamples_curleft;
+float AnalyzeSamples_sum_l;
+int AnalyzeSamples_i;
+
+void AnalyzeSamples() {
+ while (AnalyzeSamples_i--) {
+ float l1 = AnalyzeSamples_curleft[1] * AnalyzeSamples_curleft[1],
+ l3 = AnalyzeSamples_curleft[3] * AnalyzeSamples_curleft[3],
+ sl = l1 + l3;
+ AnalyzeSamples_sum_l += sl;
+ AnalyzeSamples_curleft += 4;
+ }
+ AnalyzeSamples_rgData.lsum += AnalyzeSamples_sum_l;
+}
diff --git a/gcc/testsuite/gcc.dg/vect/vect-reduc-bool-9.c b/gcc/testsuite/gcc.dg/vect/vect-reduc-bool-9.c
new file mode 100644
index 0000000..4ec141c
--- /dev/null
+++ b/gcc/testsuite/gcc.dg/vect/vect-reduc-bool-9.c
@@ -0,0 +1,27 @@
+/* PR122365 */
+/* { dg-do compile } */
+
+struct TDTI {
+ float V[4];
+};
+struct TDTI4D {
+ struct TDTI S[];
+};
+void bar();
+struct TDTI4D nii_readParRec_dti4D;
+int nii_readParRec_d_0_0;
+void nii_readParRec() {
+ for (int i;;) {
+ bool v1varies = false, v2varies = false, v3varies = false;
+ for (; i < nii_readParRec_d_0_0; i++) {
+ if (nii_readParRec_dti4D.S[i].V[1])
+ v1varies = true;
+ if (nii_readParRec_dti4D.S[i].V[2])
+ v2varies = true;
+ if (nii_readParRec_dti4D.S[i].V[3])
+ v3varies = true;
+ }
+ if (v1varies || v2varies || v3varies)
+ bar();
+ }
+}
diff --git a/gcc/testsuite/gcc.dg/vect/vect-reduc-chain-4.c b/gcc/testsuite/gcc.dg/vect/vect-reduc-chain-4.c
new file mode 100644
index 0000000..d79676d
--- /dev/null
+++ b/gcc/testsuite/gcc.dg/vect/vect-reduc-chain-4.c
@@ -0,0 +1,31 @@
+#include "tree-vect.h"
+
+int q[32];
+
+int __attribute__((noipa))
+foo ()
+{
+ int res = 0;
+ for (int i = 0; i < 8; ++i)
+ res += q[4*i] + q[4*i+1] + q[4*i+2] + q[4*i+3];
+ return res;
+}
+
+int main()
+{
+ check_vect ();
+
+ int sum = 0;
+#pragma GCC novector
+ for (int i = 0; i < 32; ++i)
+ {
+ q[i] = i;
+ sum += i;
+ }
+
+ if (foo () != sum)
+ abort ();
+}
+
+/* { dg-final { scan-tree-dump "vectorizing a reduction chain" "vect" } } */
+/* { dg-final { scan-tree-dump "optimized: loop vectorized" "vect" } } */
diff --git a/gcc/testsuite/gcc.dg/vect/vect-reduc-chain-5.c b/gcc/testsuite/gcc.dg/vect/vect-reduc-chain-5.c
new file mode 100644
index 0000000..1566e5f
--- /dev/null
+++ b/gcc/testsuite/gcc.dg/vect/vect-reduc-chain-5.c
@@ -0,0 +1,31 @@
+#include "tree-vect.h"
+
+int q[32];
+
+unsigned __attribute__((noipa))
+foo ()
+{
+ unsigned res = 0;
+ for (int i = 0; i < 8; ++i)
+ res += q[4*i] + q[4*i+1] + q[4*i+2] + q[4*i+3];
+ return res;
+}
+
+int main()
+{
+ check_vect ();
+
+ unsigned sum = 0;
+#pragma GCC novector
+ for (int i = 0; i < 32; ++i)
+ {
+ q[i] = i;
+ sum += i;
+ }
+
+ if (foo () != sum)
+ abort ();
+}
+
+/* { dg-final { scan-tree-dump "vectorizing a reduction chain" "vect" } } */
+/* { dg-final { scan-tree-dump "optimized: loop vectorized" "vect" } } */