http://gcc.gnu.org/bugzilla/show_bug.cgi?id=49159
Summary: OpenMP compilation errors Product: gcc Version: 4.7.0 Status: UNCONFIRMED Severity: major Priority: P3 Component: fortran AssignedTo: unassig...@gcc.gnu.org ReportedBy: jose.pascual-guti...@1-act.com I have the following OpenMP Fortran95 test program called test.f90. PROGRAM test USE OMP_LIB, ONLY: OMP_SET_NUM_THREADS IMPLICIT NONE INTEGER, PARAMETER :: numthreds = 4 INTEGER, PARAMETER :: maxnumber = 12 INTEGER :: totalsum, add, number CALL OMP_SET_NUM_THREADS (numthreads) totalsum = 0 add = 1 !$OMP PARALLEL DO & !$OMP SCHEDULE(DYNAMIC,1) & !$OMP DEFAULT(SHARED) & !$OMP PRIVATE(number1, & number2) & !$OMP REDUCTION(+:totalsum) DO nunmber = 1, maxnumber totalsum = add + totalsum + number END DO !$OMP END PARALLEL DO WRITE (*,*) totalsum END PROGRAM test I try to compile it with the command "gfortran -fopenmp test.f90". The compiler returns with the following error message: test.f90:16.24: !$OMP PRIVATE(number1, & 1 Error: Syntax error in OpenMP variable list at (1) test.f90:17.16: number2) & 1 Error: Unclassifiable statement at (1) test.f90:18.8: !$OMP REDUCTION(+:totalsum) 1 Error: Unclassifiable OpenMP directive at (1) test.f90:24.23: !$OMP END PARALLEL DO 1 Error: Unexpectged !$OMP END PARALLEL DO statement at (1) It is clear that the erros are caused by the !$OMP PRIVATE line. It seems that a list of variables cannot be broken in two lines. Had I had !$OMP PRIVATE(number1,number2) & instead of the two lines connected with the & sign, I would have not had any compilation errors. I wanted to try breaking the line, though, because in my codes I have very long lists of private variables. In the previous compiler I used, namely Intel's ifort, I had no issues. Do you have any suggestions when it comes to long lists of private variables? Should I simply have several !$OMP PRIVATE ([var1],[var2],...,[varn]) lines each opening and closing the bracket? Thank you very much