https://gcc.gnu.org/bugzilla/show_bug.cgi?id=100321
--- Comment #3 from Tom de Vries <vries at gcc dot gnu.org> --- C example: ... /* { dg-additional-options "-foffload=-latomic" } */ #include <stdio.h> struct s { int i; }; #pragma omp declare reduction(+: struct s: omp_out.i += omp_in.i) int main (void) { const int N0 = 32768; printf ("Expected: %d\n", N0); struct s counter_N0 = { 0 }; #pragma omp target #pragma omp for simd reduction(+: counter_N0) for (int i0 = 0 ; i0 < N0 ; i0++ ) counter_N0.i += 1; printf ("Got : %d\n", counter_N0.i); return 0; } ...