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

Jakub Jelinek <jakub at gcc dot gnu.org> changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
             Status|UNCONFIRMED                 |NEW
   Last reconfirmed|                            |2019-01-24
     Ever confirmed|0                           |1

--- Comment #2 from Jakub Jelinek <jakub at gcc dot gnu.org> ---
It ICEs also with
template <typename T>
struct A {
  A () : a ()
  {
    [&] ()
    {
#pragma omp parallel firstprivate (a) if (0)
      ++a;
    } ();
  }

  T a;
};

A<int> x;
which ought to be valid in OpenMP 5.0 (without if (0) it is racy), not really
valid OpenMP 4.5 because mixing C++11 and later futures like lambda here with
OpenMP features is undefined.  We do compile

struct B {
  B () : b ()
  {
    [&] ()
    {
#pragma omp parallel firstprivate (b) if (0)
      ++b;
    } ();
  }

  int b;
};

B y;

though.

Reply via email to