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

Reply via email to