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.