diff options
Diffstat (limited to 'gcc/testsuite/gcc.dg')
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*)↑ 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*)↑ 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*)↑ 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*)↑ 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*)↑ 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*)↑ 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*)↑ 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*)↑ 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*)↑ 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*)↑ 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*)↑ 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*)↑ 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" } } */ |
