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

--- Comment #4 from Paul Thomas <pault at gcc dot gnu.org> ---
Hi Patrick,

Confirmed on pre-release GNU Fortran (GCC) 13.0.1 20230414.

The compiler is objecting to the dereferencing in the pragma call:
  while (1)
    {
      if (done) goto L.4;
      copy_transform (&atransform1, &atransform2);
      #pragma acc enter data map(attach:*atransform2->next [bias: 184])
map(attach_detach:atransform2->next [bias: 0]);
      if (atransform1->next != 0B && atransform2->next != 0B)
        {
          atransform1 = atransform1->next;
          atransform2 = atransform2->next;
        }
      else
        {
          done = 1;
        }
      L.5:;
      L.3:;
    }

Compiles OK with GNU Fortran (GCC) 12.2.1 20230321 so I am marking as a
regression. ifort compiles it OK with -qopenmp.

It compiles fine is a non-pointer transform_t is passed.

I am cc'ing Tobias, who at least knows a lot about the workings of OpenMP in
gcc.

Thanks for the report.

Paul

Reply via email to