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

            Bug ID: 90771
           Summary: Omp for with default(none) and const variable fails to
                    compile
           Product: gcc
           Version: 9.1.0
            Status: UNCONFIRMED
          Severity: normal
          Priority: P3
         Component: libgomp
          Assignee: unassigned at gcc dot gnu.org
          Reporter: jodebo_beck at gmx dot de
                CC: jakub at gcc dot gnu.org
  Target Milestone: ---

Compiling the following code works with gcc 8.3 but no longer works with gcc 9:

int getNumRows() {
    return 10;
}

int main() {
    const int rows = getNumRows();

    #pragma omp parallel for default( none )
    for( int row = 0; row < rows ; ++row) {
    }
}

Compiler with g++ -fopenmp results in the following error message:
<source>: In function 'int main()':
<source>:9:5: error: 'rows' not specified in enclosing 'parallel'
    9 |     for( int row = 0; row < rows ; ++row) {
      |     ^~~
<source>:8:13: error: enclosing 'parallel'
    8 |     #pragma omp parallel for default( none )
      |             ^~~
Compiler returned: 1

(link to compiler explorer: https://godbolt.org/z/YfO7tD)

I am not sure, if the code is not correct or if this is a regression. Clang and
MSVC does compile it.

Reply via email to