/* Exercise nested function decomposition, gcc/tree-nested.c. */ /* { dg-additional-options "-fopt-info-all-omp" } */ /* { dg-additional-options "--param=openacc-privatization=noisy" } */ /* It's only with Tcl 8.5 (released in 2007) that "the variable 'varName' passed to 'incr' may be unset, and in that case, it will be set to [...]", so to maintain compatibility with earlier Tcl releases, we manually initialize counter variables: { dg-line l_dummy[variable c_loop 0] } { dg-message dummy {} { target iN-VAl-Id } l_dummy } to avoid "WARNING: dg-line var l_dummy defined, but not used". */ int main (void) { int j = 0, k = 6, l = 7, m = 8; void simple (void) { int i; #pragma acc parallel { #pragma acc loop /* { dg-line l_loop[incr c_loop] } */ /* { dg-note {variable 'i' in 'private' clause isn't candidate for adjusting OpenACC privatization level: not addressable} {} { target *-*-* } l_loop$c_loop } */ /* { dg-optimized {assigned OpenACC gang vector loop parallelism} {} { target *-*-* } l_loop$c_loop } */ for (i = 0; i < m; i+= k) j = (m + i - j) * l; } } void collapse (void) { int x, y, z; #pragma acc parallel { #pragma acc loop collapse (3) /* { dg-line l_loop[incr c_loop] } */ /* { dg-note {variable 'z' in 'private' clause isn't candidate for adjusting OpenACC privatization level: not addressable} {} { target *-*-* } l_loop$c_loop } */ /* { dg-note {variable 'y' in 'private' clause isn't candidate for adjusting OpenACC privatization level: not addressable} {} { target *-*-* } l_loop$c_loop } */ /* { dg-note {variable 'x' in 'private' clause isn't candidate for adjusting OpenACC privatization level: not addressable} {} { target *-*-* } l_loop$c_loop } */ /* { dg-optimized {assigned OpenACC gang vector loop parallelism} {} { target *-*-* } l_loop$c_loop } */ for (x = 0; x < k; x++) for (y = -5; y < l; y++) for (z = 0; z < m; z++) j += x + y + z; } } void reduction (void) { int x, y, z; #pragma acc parallel reduction (+:j) { #pragma acc loop reduction (+:j) collapse (3) /* { dg-line l_loop[incr c_loop] } */ /* { dg-note {variable 'z' in 'private' clause isn't candidate for adjusting OpenACC privatization level: not addressable} {} { target *-*-* } l_loop$c_loop } */ /* { dg-note {variable 'y' in 'private' clause isn't candidate for adjusting OpenACC privatization level: not addressable} {} { target *-*-* } l_loop$c_loop } */ /* { dg-note {variable 'x' in 'private' clause isn't candidate for adjusting OpenACC privatization level: not addressable} {} { target *-*-* } l_loop$c_loop } */ /* { dg-optimized {assigned OpenACC gang vector loop parallelism} {} { target *-*-* } l_loop$c_loop } */ for (x = 0; x < k; x++) for (y = -5; y < l; y++) for (z = 0; z < m; z++) j += x + y + z; } } simple(); collapse(); reduction(); return 0; }