https://gcc.gnu.org/bugzilla/show_bug.cgi?id=99266
--- Comment #2 from Tobias Burnus <burnus at gcc dot gnu.org> ---
subroutine foo(dummy)
class(*) :: dummy
allocatable :: dummy
end
gets rejected with:
Error: ALLOCATABLE attribute conflicts with POINTER attribute at (1)
The following is accepted, except after the patch proposed for PR99254:
subroutine foo
class(*) :: local
allocatable :: local
end
The reason is how 'class_ok = ' is set. – And in general, the issue is due to
how attributes are checked.
NOTE: If attributes change after the symbol is used, we may create unused
derived types, which is hopefully harmless.
The following is also a bit odd:
rank = !(*as) || (*as)->rank == -1 ? GFC_MAX_DIMENSIONS : (*as)->rank;
why do become become scalars (as == NULL) rank = 15 but not coarray scalars
rank == 0?
Shouldn't this be: rank = (!(*as) ? 0 : (...rank == -1 ? ...MAX... : ...rank))
?