Memory partitioning considered harmful (!?)
Tobias Schlüter
tobias.schlueter@physik.uni-muenchen.de
Thu Feb 8 17:14:00 GMT 2007
Richard Guenther wrote:
> The other thing is to use by-value argument passing conventions for
> internal intrinsics wherever possible so that a
>
> write (*,*) a
>
> does not make 'a' addressable. This is what makes fatigue so sensitive
> to the partitioning choices - we have an addressable induction variable
> and miss loop invariant motion of sin() and cos() calls if the memory
> tag for the induction variable is coalesced with the wrong things. The
> induction variable only has a memory tag because it is marked addressable
> and this is only due to the fact that fatigue re-uses it in an I/O
> statement (like the one quoted above) later in the function.
Is there no finer-grained control available which says "this variable's
address is taken, but it's not written to"? This seems useful for both
passing structures in C code and INTENT(IN) arguments in Fortran code
(where we can't use different calling conventions due to compatibility
with legacy code).
- Tobi
More information about the Fortran
mailing list