https://gcc.gnu.org/bugzilla/show_bug.cgi?id=100450
Bug ID: 100450
Summary: Missing ' ' space for '-E' preprocessing output, works
with direct compilation
Product: gcc
Version: 12.0
Status: UNCONFIRMED
Keywords: wrong-code
Severity: normal
Priority: P3
Component: c
Assignee: unassigned at gcc dot gnu.org
Reporter: burnus at gcc dot gnu.org
Target Milestone: ---
The following code compiles with
-c -fopenmp -Wall test.c
But the output with -E + compilation shows:
warning: ignoring ‘#pragma omp forreduction’ [-Wunknown-pragmas]
as the -E preprocessor outputs:
#pragma omp forreduction(+:red)
instead of the expected
#pragma omp for reduction(+:red)
-----------------^
Testcase:
-----------------------------------
#define TEST(T) { \
{T} \
}
#define CLAUSES reduction(+:red)
#define PARALLEL_FOR(X) TEST({ \
_Pragma("omp for CLAUSES") \
X \
})
void foo()
{
int red = 0;
int A[3] = {};
#pragma omp parallel shared(red)
PARALLEL_FOR( for(int i=0; i < 3; i++) red += A[i]; )
}