How to express the fact that arguments don't escape?
Richard Guenther
richard.guenther@gmail.com
Sun Aug 16 14:20:00 GMT 2009
2009/8/16 Tobias Schlüter <tobias.schlueter@physik.uni-muenchen.de>:
> Richard Guenther wrote:
>>
>> And this effect will only be positive on optimizations if you have like
>>
>> do i=1,10
>> g(i)
>> ... = function of i
>> f(k)
>> ... = function of i
>> end do
>>
>> where the load from i can be CSEd around the call to f (because it didn't
>> escape to g). So I expect this to be a pretty rare case. Note it doesn't
>> help
>> loop optimizations as i is still clobbered in unpredictable ways by g.
>
> It's not allowed to be changed inside the loop, so if i is clobbered inside
> g, the code is undefined.
In that case you can unconditionally omit the copy-back. For the correct
variable of course. Which would then still be profitable (just if you for some
reason require a copy-back it's likely not always profitable).
> But please note that the loop variable (i) and the loop counter (the one
> that appears in the loop condition on the gimple level) are not the same,
> see the comment leading up to gfc_trans_do in trans-stmt.c.
>
> Cheers,
> - Tobi
>
More information about the Fortran
mailing list