Hi! On 2020-07-28T10:44:29+0200, I wrote: > On 2020-07-26T14:05:32+0100, Kwok Cheung Yeung <k...@codesourcery.com> wrote: >> On 24/07/2020 8:27 am, Thomas Schwinge wrote: >>> [proposed patch] however completely defeats what we're intending to test >>> here, which >>> is to "Test invalid intra-routine parallelism". The same problem has >>> been introduced in og10 commit 6a0b5806b24bfdefe0b0f3ccbcc51299e5195dca >>> "Various OpenACC reduction enhancements - test cases" for >>> 'gcc/testsuite/c-c++-common/goacc/routine-4.c', which throughout changed: >>> >>> -#pragma acc loop gang reduction (+:red) // { dg-error "disallowed by >>> containing routine" } >>> +#pragma acc loop seq reduction (+:red) >>> >>> Please revert that, and instead replace 'reduction (+:red)' with a >>> different "dummy loop operation" (just an empty loop body?), and in the >>> commit log state that this should've been included in the respective og10 >>> commit adding the "gang reduction on an orphan loop" checking. >> >> I have reverted all the previous changes and replaced the orphan loop gang >> reductions with empty loops as suggested, and checked that the tests now >> pass. >> >> Is this version okay for OG10? > > Yes, thanks.
... which I've now adapted and pushed to master branch in commit a83a07557085f6da83c63e86c1cd2e719a39b8b2 "Fix c-c++-common/goacc/routine-4.c and c-c++-common/goacc/routine-4-extern.c testcases", see attached. Grüße Thomas ----------------- Siemens Electronic Design Automation GmbH; Anschrift: Arnulfstraße 201, 80634 München; Gesellschaft mit beschränkter Haftung; Geschäftsführer: Thomas Heurung, Frank Thürauf; Sitz der Gesellschaft: München; Registergericht München, HRB 106955
>From a83a07557085f6da83c63e86c1cd2e719a39b8b2 Mon Sep 17 00:00:00 2001 From: Kwok Cheung Yeung <k...@codesourcery.com> Date: Tue, 28 Jul 2020 05:41:14 -0700 Subject: [PATCH] Fix c-c++-common/goacc/routine-4.c and c-c++-common/goacc/routine-4-extern.c testcases ... in preparation for checks that we're introducing for OpenACC gang reductions on orphan loops. gcc/testsuite/ * c-c++-common/goacc/routine-4.c (seq, vector, worker, gang): Remove loop reductions. * c-c++-common/goacc/routine-4-extern.c (seq, vector, worker, gang): Likewise. Co-Authored-By: Thomas Schwinge <tho...@codesourcery.com> --- .../c-c++-common/goacc/routine-4-extern.c | 72 +++++++++---------- gcc/testsuite/c-c++-common/goacc/routine-4.c | 72 +++++++++---------- 2 files changed, 64 insertions(+), 80 deletions(-) diff --git a/gcc/testsuite/c-c++-common/goacc/routine-4-extern.c b/gcc/testsuite/c-c++-common/goacc/routine-4-extern.c index ec21db1c319..ec4475818ad 100644 --- a/gcc/testsuite/c-c++-common/goacc/routine-4-extern.c +++ b/gcc/testsuite/c-c++-common/goacc/routine-4-extern.c @@ -26,23 +26,21 @@ void seq (void) extern_vector (); /* { dg-error "routine call uses" } */ extern_seq (); - int red; - -#pragma acc loop reduction (+:red) // { dg-warning "insufficient partitioning" } +#pragma acc loop // { dg-warning "insufficient partitioning" } for (int i = 0; i < 10; i++) - red ++; + ; -#pragma acc loop gang reduction (+:red) // { dg-error "disallowed by containing routine" } +#pragma acc loop gang // { dg-error "disallowed by containing routine" } for (int i = 0; i < 10; i++) - red ++; + ; -#pragma acc loop worker reduction (+:red) // { dg-error "disallowed by containing routine" } +#pragma acc loop worker // { dg-error "disallowed by containing routine" } for (int i = 0; i < 10; i++) - red ++; + ; -#pragma acc loop vector reduction (+:red) // { dg-error "disallowed by containing routine" } +#pragma acc loop vector // { dg-error "disallowed by containing routine" } for (int i = 0; i < 10; i++) - red ++; + ; } void vector (void) @@ -52,23 +50,21 @@ void vector (void) extern_vector (); extern_seq (); - int red; - -#pragma acc loop reduction (+:red) +#pragma acc loop for (int i = 0; i < 10; i++) - red ++; + ; -#pragma acc loop gang reduction (+:red) // { dg-error "disallowed by containing routine" } +#pragma acc loop gang // { dg-error "disallowed by containing routine" } for (int i = 0; i < 10; i++) - red ++; + ; -#pragma acc loop worker reduction (+:red) // { dg-error "disallowed by containing routine" } +#pragma acc loop worker // { dg-error "disallowed by containing routine" } for (int i = 0; i < 10; i++) - red ++; + ; -#pragma acc loop vector reduction (+:red) +#pragma acc loop vector for (int i = 0; i < 10; i++) - red ++; + ; } void worker (void) @@ -78,23 +74,21 @@ void worker (void) extern_vector (); extern_seq (); - int red; - -#pragma acc loop reduction (+:red) +#pragma acc loop for (int i = 0; i < 10; i++) - red ++; + ; -#pragma acc loop gang reduction (+:red) // { dg-error "disallowed by containing routine" } +#pragma acc loop gang // { dg-error "disallowed by containing routine" } for (int i = 0; i < 10; i++) - red ++; + ; -#pragma acc loop worker reduction (+:red) +#pragma acc loop worker for (int i = 0; i < 10; i++) - red ++; + ; -#pragma acc loop vector reduction (+:red) +#pragma acc loop vector for (int i = 0; i < 10; i++) - red ++; + ; } void gang (void) @@ -104,21 +98,19 @@ void gang (void) extern_vector (); extern_seq (); - int red; - -#pragma acc loop reduction (+:red) +#pragma acc loop for (int i = 0; i < 10; i++) - red ++; + ; -#pragma acc loop gang reduction (+:red) +#pragma acc loop gang for (int i = 0; i < 10; i++) - red ++; + ; -#pragma acc loop worker reduction (+:red) +#pragma acc loop worker for (int i = 0; i < 10; i++) - red ++; + ; -#pragma acc loop vector reduction (+:red) +#pragma acc loop vector for (int i = 0; i < 10; i++) - red ++; + ; } diff --git a/gcc/testsuite/c-c++-common/goacc/routine-4.c b/gcc/testsuite/c-c++-common/goacc/routine-4.c index 5f2194c3f62..870ff645777 100644 --- a/gcc/testsuite/c-c++-common/goacc/routine-4.c +++ b/gcc/testsuite/c-c++-common/goacc/routine-4.c @@ -17,23 +17,21 @@ void seq (void) vector (); /* { dg-error "routine call uses" } */ seq (); - int red; - -#pragma acc loop reduction (+:red) // { dg-warning "insufficient partitioning" } +#pragma acc loop // { dg-warning "insufficient partitioning" } for (int i = 0; i < 10; i++) - red ++; + ; -#pragma acc loop gang reduction (+:red) // { dg-error "disallowed by containing routine" } +#pragma acc loop gang // { dg-error "disallowed by containing routine" } for (int i = 0; i < 10; i++) - red ++; + ; -#pragma acc loop worker reduction (+:red) // { dg-error "disallowed by containing routine" } +#pragma acc loop worker // { dg-error "disallowed by containing routine" } for (int i = 0; i < 10; i++) - red ++; + ; -#pragma acc loop vector reduction (+:red) // { dg-error "disallowed by containing routine" } +#pragma acc loop vector // { dg-error "disallowed by containing routine" } for (int i = 0; i < 10; i++) - red ++; + ; } void vector (void) /* { dg-message "declared here" "1" } */ @@ -43,23 +41,21 @@ void vector (void) /* { dg-message "declared here" "1" } */ vector (); seq (); - int red; - -#pragma acc loop reduction (+:red) +#pragma acc loop for (int i = 0; i < 10; i++) - red ++; + ; -#pragma acc loop gang reduction (+:red) // { dg-error "disallowed by containing routine" } +#pragma acc loop gang // { dg-error "disallowed by containing routine" } for (int i = 0; i < 10; i++) - red ++; + ; -#pragma acc loop worker reduction (+:red) // { dg-error "disallowed by containing routine" } +#pragma acc loop worker // { dg-error "disallowed by containing routine" } for (int i = 0; i < 10; i++) - red ++; + ; -#pragma acc loop vector reduction (+:red) +#pragma acc loop vector for (int i = 0; i < 10; i++) - red ++; + ; } void worker (void) /* { dg-message "declared here" "2" } */ @@ -69,23 +65,21 @@ void worker (void) /* { dg-message "declared here" "2" } */ vector (); seq (); - int red; - -#pragma acc loop reduction (+:red) +#pragma acc loop for (int i = 0; i < 10; i++) - red ++; + ; -#pragma acc loop gang reduction (+:red) // { dg-error "disallowed by containing routine" } +#pragma acc loop gang // { dg-error "disallowed by containing routine" } for (int i = 0; i < 10; i++) - red ++; + ; -#pragma acc loop worker reduction (+:red) +#pragma acc loop worker for (int i = 0; i < 10; i++) - red ++; + ; -#pragma acc loop vector reduction (+:red) +#pragma acc loop vector for (int i = 0; i < 10; i++) - red ++; + ; } void gang (void) /* { dg-message "declared here" "3" } */ @@ -95,21 +89,19 @@ void gang (void) /* { dg-message "declared here" "3" } */ vector (); seq (); - int red; - -#pragma acc loop reduction (+:red) +#pragma acc loop for (int i = 0; i < 10; i++) - red ++; + ; -#pragma acc loop gang reduction (+:red) +#pragma acc loop gang for (int i = 0; i < 10; i++) - red ++; + ; -#pragma acc loop worker reduction (+:red) +#pragma acc loop worker for (int i = 0; i < 10; i++) - red ++; + ; -#pragma acc loop vector reduction (+:red) +#pragma acc loop vector for (int i = 0; i < 10; i++) - red ++; + ; } -- 2.33.0