Hi! On Tue, 1 Dec 2015 15:25:42 +0100, Tom de Vries <tom_devr...@mentor.com> 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