This is the mail archive of the gcc-patches@gcc.gnu.org mailing list for the GCC project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

Re: Memory partitioning considered harmful (!?)


On 2/8/07, Tobias Schlüter <tobias.schlueter@physik.uni-muenchen.de> wrote:
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).


If you would like to add support for saying "This function only writes to argument a, b, and c, and only reads from arguments d, e, and f", that would give you the support you want :)


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]