Message ID | 07709f66-bf60-c95f-bee3-2d24adc492aa@codesourcery.com |
---|---|
State | New |
Headers | show |
Series | [og10] Fix goacc/routine-4-extern.c test | expand |
Hi Kwok! On 2020-07-22T14:38:04+0100, Kwok Cheung Yeung <kcy@codesourcery.com> wrote: > This test fails due to expected warnings and errors not being emitted by GCC. > The problem is that the 'gang reduction on an orphan loop' error is caught very > early on in the frontends (c/c-typeck.c and cp/semantics.c), so the compiler > aborts before getting to the tree passes that emit the missing warnings/errors. ACK, and it seems correct to me that these are indeed "gang reduction on an orphan loop". > This error handling was introduced by the patch 'Various OpenACC reduction > enhancements - FE changes' (commit 6b3e1f7f05cd360bbd356b3f78511aa2ec3f40c3), > but the later patch to fix affected testcases 'Various OpenACC reduction > enhancements - test cases' (commit 6a0b5806b24bfdefe0b0f3ccbcc51299e5195dca) did > not include a fix for routine-4-extern.c. > > This patch removes the now outdated dg-error and dg-warnings from the test. Okay > for OG10? That 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. Grüße Thomas > From 5774f048563df311f2a35a654b8c2d7b1af9f2da Mon Sep 17 00:00:00 2001 > From: Kwok Cheung Yeung <kcy@codesourcery.com> > Date: Thu, 18 Jun 2020 14:31:17 -0700 > Subject: [PATCH 2/6] Fix failures in c-c++-common/goacc/routine-4-extern.c > testcase > > 2020-07-21 Kwok Cheung Yeung <kcy@codesourcery.com> > > gcc/testsuite/ > * c-c++-common/goacc/routine-4-extern.c (seq, vector, worker): Remove > obsolete expected warnings and errors. > --- > gcc/testsuite/c-c++-common/goacc/routine-4-extern.c | 20 ++++++++++---------- > 1 file changed, 10 insertions(+), 10 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 c23ddcf..5f8372c 100644 > --- a/gcc/testsuite/c-c++-common/goacc/routine-4-extern.c > +++ b/gcc/testsuite/c-c++-common/goacc/routine-4-extern.c > @@ -21,14 +21,14 @@ void vector (void); > #pragma acc routine seq > void seq (void) > { > - extern_gang (); /* { dg-error "routine call uses" } */ > - extern_worker (); /* { dg-error "routine call uses" } */ > - extern_vector (); /* { dg-error "routine call uses" } */ > + extern_gang (); > + extern_worker (); > + extern_vector (); > extern_seq (); > > int red; > > -#pragma acc loop reduction (+:red) // { dg-warning "insufficient partitioning" } > +#pragma acc loop reduction (+:red) > for (int i = 0; i < 10; i++) > red ++; > > @@ -36,19 +36,19 @@ void seq (void) > for (int i = 0; i < 10; i++) > red ++; > > -#pragma acc loop worker reduction (+:red) // { dg-error "disallowed by containing routine" } > +#pragma acc loop worker reduction (+:red) > for (int i = 0; i < 10; i++) > red ++; > > -#pragma acc loop vector reduction (+:red) // { dg-error "disallowed by containing routine" } > +#pragma acc loop vector reduction (+:red) > for (int i = 0; i < 10; i++) > red ++; > } > > void vector (void) > { > - extern_gang (); /* { dg-error "routine call uses" } */ > - extern_worker (); /* { dg-error "routine call uses" } */ > + extern_gang (); > + extern_worker (); > extern_vector (); > extern_seq (); > > @@ -62,7 +62,7 @@ void vector (void) > for (int i = 0; i < 10; i++) > red ++; > > -#pragma acc loop worker reduction (+:red) // { dg-error "disallowed by containing routine" } > +#pragma acc loop worker reduction (+:red) > for (int i = 0; i < 10; i++) > red ++; > > @@ -73,7 +73,7 @@ void vector (void) > > void worker (void) > { > - extern_gang (); /* { dg-error "routine call uses" } */ > + extern_gang (); > extern_worker (); > extern_vector (); > extern_seq (); ----------------- Mentor Graphics (Deutschland) GmbH, Arnulfstraße 201, 80634 München / Germany Registergericht München HRB 106955, Geschäftsführer: Thomas Heurung, Alexander Walter
On 24/07/2020 8:27 am, Thomas Schwinge wrote: > That 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? Thanks Kwok From 280957dc80090bd0b92ad7a73f528851aad94051 Mon Sep 17 00:00:00 2001 From: Kwok Cheung Yeung <kcy@codesourcery.com> Date: Sun, 26 Jul 2020 05:11:30 -0700 Subject: [PATCH] Fix c-c++-common/goacc/routine-4.c and c-c++-common/goacc/routine-4-extern.c testcases 'Various OpenACC reduction enhancements - FE changes' (commit 6b3e1f7f05cd360bbd356b3f78511aa2ec3f40c3) introduced checks for gang reductions on orphan loops. The checks triggered in the routine-4.c and routine-4-extern.c testcases, requiring changes that effectively rendered them useless as test cases. This patch restores the original intent of the test cases, by restoring the original tests and removing the orphan loop reductions that were triggering the new check. This patch should probably have been part of 'Various OpenACC reduction enhancements - test cases' (commit 6a0b5806b24bfdefe0b0f3ccbcc51299e5195dca). 2020-07-26 Kwok Cheung Yeung <kcy@codesourcery.com> gcc/testsuite/ * c-c++-common/goacc/routine-4.c (seq, vector, worker, gang): Revert previous changes. Remove loop reductions. * c-c++-common/goacc/routine-4-extern.c (seq, vector, worker, gang): Likewise. --- .../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 c23ddcf..ec44758 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 "gang reduction on an orphan loop" } +#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 "gang reduction on an orphan loop" } +#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 "gang reduction on an orphan loop" } +#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) /* { dg-error "gang reduction on an orphan loop" } */ +#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 ad17371..870ff64 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 seq reduction (+:red) +#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 seq reduction (+:red) +#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 seq reduction (+:red) +#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 seq 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 ++; + ; }
Hi Kwok! On 2020-07-26T14:05:32+0100, Kwok Cheung Yeung <kcy@codesourcery.com> wrote: > On 24/07/2020 8:27 am, Thomas Schwinge wrote: >> That 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. Grüße Thomas > From 280957dc80090bd0b92ad7a73f528851aad94051 Mon Sep 17 00:00:00 2001 > From: Kwok Cheung Yeung <kcy@codesourcery.com> > Date: Sun, 26 Jul 2020 05:11:30 -0700 > Subject: [PATCH] Fix c-c++-common/goacc/routine-4.c and > c-c++-common/goacc/routine-4-extern.c testcases > > 'Various OpenACC reduction enhancements - FE changes' (commit > 6b3e1f7f05cd360bbd356b3f78511aa2ec3f40c3) introduced checks for gang > reductions on orphan loops. The checks triggered in the routine-4.c > and routine-4-extern.c testcases, requiring changes that effectively > rendered them useless as test cases. > > This patch restores the original intent of the test cases, by restoring > the original tests and removing the orphan loop reductions that were > triggering the new check. > > This patch should probably have been part of 'Various OpenACC reduction > enhancements - test cases' (commit 6a0b5806b24bfdefe0b0f3ccbcc51299e5195dca). > > 2020-07-26 Kwok Cheung Yeung <kcy@codesourcery.com> > > gcc/testsuite/ > * c-c++-common/goacc/routine-4.c (seq, vector, worker, gang): Revert > previous changes. Remove loop reductions. > * c-c++-common/goacc/routine-4-extern.c (seq, vector, worker, gang): > Likewise. > --- > .../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 c23ddcf..ec44758 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 "gang reduction on an orphan loop" } > +#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 "gang reduction on an orphan loop" } > +#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 "gang reduction on an orphan loop" } > +#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) /* { dg-error "gang reduction on an orphan loop" } */ > +#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 ad17371..870ff64 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 seq reduction (+:red) > +#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 seq reduction (+:red) > +#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 seq reduction (+:red) > +#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 seq 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 ++; > + ; > } ----------------- Mentor Graphics (Deutschland) GmbH, Arnulfstraße 201, 80634 München / Germany Registergericht München HRB 106955, Geschäftsführer: Thomas Heurung, Alexander Walter
Hi! On 2020-07-28T10:44:29+0200, I wrote: > On 2020-07-26T14:05:32+0100, Kwok Cheung Yeung <kcy@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
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 c23ddcf..5f8372c 100644 --- a/gcc/testsuite/c-c++-common/goacc/routine-4-extern.c +++ b/gcc/testsuite/c-c++-common/goacc/routine-4-extern.c @@ -21,14 +21,14 @@ void vector (void); #pragma acc routine seq void seq (void) { - extern_gang (); /* { dg-error "routine call uses" } */ - extern_worker (); /* { dg-error "routine call uses" } */ - extern_vector (); /* { dg-error "routine call uses" } */ + extern_gang (); + extern_worker (); + extern_vector (); extern_seq (); int red; -#pragma acc loop reduction (+:red) // { dg-warning "insufficient partitioning" } +#pragma acc loop reduction (+:red) for (int i = 0; i < 10; i++) red ++; @@ -36,19 +36,19 @@ void seq (void) for (int i = 0; i < 10; i++) red ++; -#pragma acc loop worker reduction (+:red) // { dg-error "disallowed by containing routine" } +#pragma acc loop worker reduction (+:red) for (int i = 0; i < 10; i++) red ++; -#pragma acc loop vector reduction (+:red) // { dg-error "disallowed by containing routine" } +#pragma acc loop vector reduction (+:red) for (int i = 0; i < 10; i++) red ++; } void vector (void) { - extern_gang (); /* { dg-error "routine call uses" } */ - extern_worker (); /* { dg-error "routine call uses" } */ + extern_gang (); + extern_worker (); extern_vector (); extern_seq (); @@ -62,7 +62,7 @@ void vector (void) for (int i = 0; i < 10; i++) red ++; -#pragma acc loop worker reduction (+:red) // { dg-error "disallowed by containing routine" } +#pragma acc loop worker reduction (+:red) for (int i = 0; i < 10; i++) red ++; @@ -73,7 +73,7 @@ void vector (void) void worker (void) { - extern_gang (); /* { dg-error "routine call uses" } */ + extern_gang (); extern_worker (); extern_vector (); extern_seq ();
This test fails due to expected warnings and errors not being emitted by GCC. The problem is that the 'gang reduction on an orphan loop' error is caught very early on in the frontends (c/c-typeck.c and cp/semantics.c), so the compiler aborts before getting to the tree passes that emit the missing warnings/errors. This error handling was introduced by the patch 'Various OpenACC reduction enhancements - FE changes' (commit 6b3e1f7f05cd360bbd356b3f78511aa2ec3f40c3), but the later patch to fix affected testcases 'Various OpenACC reduction enhancements - test cases' (commit 6a0b5806b24bfdefe0b0f3ccbcc51299e5195dca) did not include a fix for routine-4-extern.c. This patch removes the now outdated dg-error and dg-warnings from the test. Okay for OG10? Kwok From 5774f048563df311f2a35a654b8c2d7b1af9f2da Mon Sep 17 00:00:00 2001 From: Kwok Cheung Yeung <kcy@codesourcery.com> Date: Thu, 18 Jun 2020 14:31:17 -0700 Subject: [PATCH 2/6] Fix failures in c-c++-common/goacc/routine-4-extern.c testcase 2020-07-21 Kwok Cheung Yeung <kcy@codesourcery.com> gcc/testsuite/ * c-c++-common/goacc/routine-4-extern.c (seq, vector, worker): Remove obsolete expected warnings and errors. --- gcc/testsuite/c-c++-common/goacc/routine-4-extern.c | 20 ++++++++++---------- 1 file changed, 10 insertions(+), 10 deletions(-)