https://gcc.gnu.org/bugzilla/show_bug.cgi?id=93787
--- Comment #1 from Tobias Burnus <burnus at gcc dot gnu.org> --- The following compiles with free-form source code but shows for fixed-form source code: Error: Ambiguous interfaces in generic interface 'acc_create_async' for ‘acc_create_async_32_h’ at (1) and ‘acc_create_async_array_h’ at (2) The difference is that for fixed-form source, the !GCC$ is ignored (which is fine). But the real question is: Why does this make a difference? (Semantically, without GCC directive, it should reject scalars while with it should also accept them. I believe that's the only difference.) interface acc_create_async subroutine acc_create_async_32_h (a, len, async) use iso_c_binding, only: c_int32_t !GCC$ ATTRIBUTES NO_ARG_CHECK :: a type (*), dimension (*) :: a integer (c_int32_t) len integer (4) async end subroutine subroutine acc_create_async_array_h (a, async) type (*), dimension (..), contiguous :: a integer (4) async end subroutine end interface end