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