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

            Bug ID: 84556
           Summary: C++17, lambda, OpenMP simd: sorry, unimplemented:
                    unexpected AST
           Product: gcc
           Version: 7.2.0
            Status: UNCONFIRMED
          Severity: normal
          Priority: P3
         Component: c++
          Assignee: unassigned at gcc dot gnu.org
          Reporter: bisqwit at iki dot fi
  Target Milestone: ---

This code generates an AST error when compiled with -std=c++17 -fopenmp.

    void foo()
    {
        auto keymaker = [](void)
        {
            #pragma omp simd
            for(unsigned pos = 0; pos < 4; ++pos)
            {
            }
        };
    }

    test.cc: In lambda function:
    test.cc:9:5: sorry, unimplemented: unexpected AST of kind omp_simd
         };
         ^
    test.cc:9: confused by earlier errors, bailing out

Compiling without -fopenmp, or using an earlier standard mode such as
-std=c++14 or -std=c++11, the error is not produced.

Tested on: g++-7 (Debian 7.2.0-19) 7.2.0
Tested on: g++-7 (Debian 7.2.0-18) 7.2.0
Tested on: g++-7.1 (GCC) 7.1.0

Problem does NOT occur on:
g++-6 (Debian 6.4.0-11) 6.4.0 20171206

Problem does NOT occur with #pragma omp parallel for.

Reply via email to