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

anlauf at gcc dot gnu.org changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
           Keywords|ice-on-valid-code           |ice-on-invalid-code

--- Comment #8 from anlauf at gcc dot gnu.org ---
(In reply to Andre Vehreschild from comment #7)
> ifort/ifx (2024.1.2) accepts the code.

Well, Intel rejects a bare

   call s(z)

so it should also reject

   call s(transpose(z))

for multiple reasons.  Intel still has a couple of issues with unlimited
polymorphism.

> My fortran is not very good, but I would expect either a select around the
> call to `s` or needing `x` to be of `class(*)`. The latter is what the
> changed example errors with:

Right.  A correct version would be:

program p
  class(*), pointer :: z(:,:)
  select type (z)
  type is (integer)
     call s(z)
     call s(transpose(z))
  end select
contains
  subroutine s(x) bind(c)
    integer, contiguous :: x(:,:)
  end
end

This is happily accepted by all gfortran >= 12.

Updating keywords from ice-on-valid-code to ice-on-invalid-code.

Reply via email to