Toon Moene wrote:
Richard Guenther wrote:
consider
void bar()
{
int i;
p = &i;
foo (&i);
}
does that call to foo invoke undefined behavior if built with
-fargument-noalias-global?
It shouldn't, as 'int i' isn't global.
Ugh, on second thoughts, this isn't possible in Fortran, so I should
have been more careful in my analysis.
-fargument-noalias-global is supposed to mean:
Argument pointers (as used by the Fortran front end to implement
Fortran's argument association) cannot point to global memory (like COMMON).
Of course, you're still able to say:
SUBROUTINE AAP(P)
P = 5.0
END
and it will change something outside subroutine AAP (namely, the actual
argument associated with P), but (the argument pointer of) P isn't
supposed to (as in: this a restriction on the programmer) point to
global memory (in the Fortran sense, i.e., COMMON).
Bah, this gets really ugly if you try to give it meaning outside Fortran.
Hope this helps,
--
Toon Moene - e-mail: t...@moene.org (*NEW*) - phone: +31 346 214290
Saturnushof 14, 3738 XG Maartensdijk, The Netherlands
At home: http://moene.org/~toon/
Progress of GNU Fortran: http://gcc.gnu.org/gcc-4.4/changes.html