http://gcc.gnu.org/bugzilla/show_bug.cgi?id=50684
--- Comment #9 from Tobias Burnus <burnus at gcc dot gnu.org> 2011-10-13
07:18:32 UTC ---
(In reply to comment #8)
> Well, comment #5 is 'equivalent' to comment #3: Both have a non-pointer intent
> (which is what you suggested in your initial comment to my patch).
Pilot error: I read in comment 3 an nonexisting "POINTER" - without pointer
attribute, I concur that it should be invalid and analoguous to comment 5. -- I
shouldn't write replies around midnight.
* * *
I think the comments of the following program are correct; however, the
compilers I tested either rejected all - or they compiled it without warning.
Thus, I might have misunderstood something. On the other hand, if I change
"call move_alloc" to "deallocate", gfortran follows my invalid/OK pattern. I
have not checked whether it works with your patch, but I think it still rejects
(3).
subroutine test (x, px)
implicit none
type t
integer, allocatable :: a
end type t
type t2
type(t), pointer :: ptr
integer, allocatable :: a
end type t2
type(t2), intent(in) :: x
type(t2), pointer, intent(in) :: px
integer, allocatable :: a
type(t2), pointer :: ta
call move_alloc (tx, ta) ! Invalid (1)
call move_alloc (x%a, a) ! Invalid (2)
call move_alloc (x%ptr%a, a) ! OK (3)
call move_alloc (px%a, a) ! OK (4)
call move_alloc (px%ptr%a, a) ! OK (5)
end subroutine test