RFA: Revamp fortran array types
Paolo Bonzini
bonzini@gnu.org
Thu Aug 20 07:59:00 GMT 2009
On 08/19/2009 07:59 PM, Toon Moene wrote:
> Steve Kargl wrote:
>
>> On Wed, Aug 19, 2009 at 06:43:13PM +0200, Toon Moene wrote:
>
>
>>> The following code is perfectly OK:
>>>
>>> DIMENSION A(10)
>>> A = 10.0
>>> CALL SUB(A,A)
>>> END
>>> SUBROUTINE SUB(A,B)
>>> REAL, INTENT(IN) :: A(:), B(:)
>>
>> What happens if you replace the last line with
>>
>> REAL, INTENT(IN) :: A(:)
>> REAL, INTENT(OUT) :: B(:)
>>
>
> Fascinating. I *think* that - as long as you do not actually write to B
> - you're in the clear.
I think even B(2) = A(1) would be fine. Or even
B(2:N:2) = A(1:N-1:2)
Long term, if the vectorizer supported this kind of masking it may get
it into trouble because of aliasing.
Paolo
More information about the Fortran
mailing list