Hi! On Tue, 1 Dec 2015 15:25:42 +0100, Tom de Vries <[email protected]> wrote: > Handle BUILT_IN_GOACC_PARALLEL in ipa-pta
> * c-c++-common/goacc/kernels-alias-ipa-pta-2.c: New test.
> * c-c++-common/goacc/kernels-alias-ipa-pta-3.c: New test.
> * c-c++-common/goacc/kernels-alias-ipa-pta.c: New test.
I see:
PASS: c-c++-common/goacc/kernels-alias-ipa-pta-2.c (test for excess errors)
FAIL: c-c++-common/goacc/kernels-alias-ipa-pta-2.c scan-tree-dump-times
optimized "(?n)= 0;$" 2
PASS: c-c++-common/goacc/kernels-alias-ipa-pta-2.c scan-tree-dump-times
optimized "(?n)= 1;$" 1
FAIL: c-c++-common/goacc/kernels-alias-ipa-pta-2.c scan-tree-dump-times
optimized "(?n)= \\*a" 0
PASS: c-c++-common/goacc/kernels-alias-ipa-pta-3.c (test for excess errors)
PASS: c-c++-common/goacc/kernels-alias-ipa-pta-3.c scan-tree-dump-times
optimized "(?n)= 0;$" 1
PASS: c-c++-common/goacc/kernels-alias-ipa-pta-3.c scan-tree-dump-times
optimized "(?n)= 1;$" 1
PASS: c-c++-common/goacc/kernels-alias-ipa-pta-3.c scan-tree-dump-times
optimized "(?n)= \\*a" 1
PASS: c-c++-common/goacc/kernels-alias-ipa-pta.c (test for excess errors)
FAIL: c-c++-common/goacc/kernels-alias-ipa-pta.c scan-tree-dump-times
optimized "(?n)= 0;$" 2
PASS: c-c++-common/goacc/kernels-alias-ipa-pta.c scan-tree-dump-times
optimized "(?n)= 1;$" 1
FAIL: c-c++-common/goacc/kernels-alias-ipa-pta.c scan-tree-dump-times
optimized "(?n)= \\*_[0-9]\\[0\\];$" 0
..., and similar for C++. Looking at
c-c++-common/goacc/kernels-alias-ipa-pta.c:
> --- /dev/null
> +++ b/gcc/testsuite/c-c++-common/goacc/kernels-alias-ipa-pta.c
> @@ -0,0 +1,23 @@
> +/* { dg-additional-options "-O2" } */
> +/* { dg-additional-options "-fipa-pta -fdump-tree-optimized" } */
> +
> +#define N 2
> +
> +void
> +foo (void)
> +{
> + unsigned int a[N];
> + unsigned int b[N];
> + unsigned int c[N];
> +
> +#pragma acc kernels pcopyout (a, b, c)
> + {
> + a[0] = 0;
> + b[0] = 1;
> + c[0] = a[0];
> + }
> +}
> +
> +/* { dg-final { scan-tree-dump-times "(?n)= 0;$" 2 "optimized" } } */
> +/* { dg-final { scan-tree-dump-times "(?n)= 1;$" 1 "optimized" } } */
> +/* { dg-final { scan-tree-dump-times "(?n)= \\*_\[0-9\]\\\[0\\\];$" 0
> "optimized" } } */
..., manually running that one for C, I get:
;; Function foo._omp_fn.0 (foo._omp_fn.0, funcdef_no=1, decl_uid=1874,
cgraph_uid=1, symbol_order=1)
__attribute__((oacc function (1, 1, 1), omp target entrypoint))
foo._omp_fn.0 (const struct .omp_data_t.0 & restrict .omp_data_i)
{
unsigned int[2] * _3;
unsigned int[2] * _5;
unsigned int _7;
unsigned int[2] * _8;
<bb 2>:
_3 = *.omp_data_i_2(D).a;
*_3[0] = 0;
_5 = *.omp_data_i_2(D).b;
*_5[0] = 1;
_7 = *_3[0];
_8 = *.omp_data_i_2(D).c;
*_8[0] = _7;
return;
}
;; Function foo (foo, funcdef_no=0, decl_uid=1866, cgraph_uid=0,
symbol_order=0)
foo ()
{
unsigned int c[2];
unsigned int b[2];
unsigned int a[2];
struct .omp_data_t.0 .omp_data_arr.1;
static long unsigned int .omp_data_sizes.2[3] = {8, 8, 8};
static short unsigned int .omp_data_kinds.3[3] = {514, 514, 514};
<bb 2>:
.omp_data_arr.1.c = &c;
.omp_data_arr.1.b = &b;
.omp_data_arr.1.a = &a;
GOACC_parallel_keyed (-1, foo._omp_fn.0, 3, &.omp_data_arr.1,
&.omp_data_sizes.2, &.omp_data_kinds.3, 0);
.omp_data_arr.1 ={v} {CLOBBER};
a ={v} {CLOBBER};
b ={v} {CLOBBER};
c ={v} {CLOBBER};
return;
}
Grüße
Thomas
signature.asc
Description: PGP signature
