https://gcc.gnu.org/bugzilla/show_bug.cgi?id=102409

--- Comment #1 from Tobias Burnus <burnus at gcc dot gnu.org> ---
Reduced example:

#define TEST(T) T
#define PARALLEL(X) TEST(X)
PARALLEL(
    for (int i = 0; i < N; i++) { \
      _Pragma("omp ordered") \
      S[0] += C[i] + D[i]; \
    })

This gives the invalid:

#pragma omp ordered
 for (int i = 0; i < N; i++) { S[0] += C[i] + D[i]; }

However, when TEST and not PARALLEL is used, the result is as expected:

for (int i = 0; i < N; i++) { 
#pragma omp ordered
 S[0] += C[i] + D[i]; }

Reply via email to