How to express the fact that arguments don't escape?

Tobias Schlüter tobias.schlueter@physik.uni-muenchen.de
Sat Aug 15 08:49:00 GMT 2009


Janne Blomqvist wrote:
> Tobias Schlüter wrote:
>>
>> Hi,
>>
>> I reviewed some old discussions on argument passing, but I found 
>> nothing which addressed a seemingly simple optimization for Fortran: 
>> what I would like to see is a way to tell the compiler that a function 
>> argument (which will be a pointer) will not have escaped after the 
>> function has returned.  I.e.
>>   call f(i)
>>   i = 1
>>   call g(j)  ! won't know about i
>>   if (i != 1) then
>>      can't happen
>>   end if
>>
>> Is there a way to do this?  Unless I'm mistaken, this assumption holds 
>> for all non-POINTER arguments.
> 
> Shouldn't the recent patch by Michael Matz fix this?
> 
> http://gcc.gnu.org/ml/fortran/2009-08/msg00104.html
> 
> By marking j as a restricted pointer it should know that it can't escape 
> and alias i.

It's not about j aliasing i, it's about f storing a pointer to i 
somewhere which then can be used to modify i in a different function 
call.  Sorry if that wasn't clear.

Cheers,
- Tobi



More information about the Fortran mailing list