'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-28 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.
+2020-07-28 Kwok Cheung Yeung <kcy@codesourcery.com>
+
+ * 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.
+
2020-07-24 Kwok Cheung Yeung <kcy@codesourcery.com>
* gfortran.dg/goacc/routine-module-mod-1.f90 (g_1): Add
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)
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)
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)
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 ++;
+ ;
}
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" } */
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" } */
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" } */
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 ++;
+ ;
}