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))
?

Reply via email to