a question about const and pure functions.

Kenneth Zadeck zadeck@naturalbridge.com
Fri Nov 12 14:50:00 GMT 2004



Geoffrey Keating wrote:

>
> On 11/11/2004, at 6:17 AM, Kenneth Zadeck wrote:
>
>> The extensions that I want to add are:
>>
>> 1) allow const to access memory if the memory is a constant, i.e. if 
>> you have a readonly static with a decl initial that satisfies  
>> is_gimple_min_invariant (), such a reference need not be treated 
>> differently than referencing a "5".
>>
>> 2) move the processing earlier so that it is available to the rest of 
>> the compiler.
>>
>> 3) allow for recursive and mutually recursive pure and const functions.
>>
>> 4) eventually to allow some loops (if they can be proven to be 
>> finite) rather than just looking for back edges in the cfg. We have 
>> this analysis in the compiler, we should be allowed to use the info 
>> here.
>>
>> The hope here is that with the exception of setting errno, that most 
>> small table driven mathematical functions would fall into one of 
>> these  categories.
>
>
> All this sounds like a great idea.
>
> (I would caution, though, that really you should check that a 
> recursive function terminates.  You may be able to finesse the issue 
> on the grounds that a recursive function that doesn't terminate will 
> usually eventually run out of stack and terminate that way.)
>
Yes, that was exactly my plan, even on a 64 bit machine, it will 
eventually terminate. 

kenny



More information about the Gcc mailing list