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