Le 19/09/2022 à 21:46, Harald Anlauf a écrit :
Am 18.09.22 um 22:55 schrieb Mikael Morin:
Le 18/09/2022 à 20:32, Harald Anlauf a écrit :
Assumed shape will be on the easy side,
while assumed size likely needs to be excluded for clobbering.
Isn’t it the converse that is true?
Assumed shape can be non-contiguous so have to be excluded, but assumed
size are contiguous, so valid candidates for clobbering. No?
I really was referring here to *dummies*, as in the following example:
program p
integer :: a(4)
a = 1
call sub (a(1), 2)
print *, a
contains
subroutine sub (b, k)
integer, intent(in) :: k
integer, intent(out) :: b(*)
! integer, intent(out) :: b(k)
if (k > 2) b(k) = k
end subroutine sub
end program p
Assumed size (*) is just a contiguous hunk of memory of possibly
unknown size, which can be zero. So you couldn't set a clobber
for the a(1) actual argument.
Couldn't you clobber A entirely? If no element of B is initialized in
SUB, well, A has undefined values on return from SUB. That's how
INTENT(OUT) works.