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