[fpc-devel] (patch) An attempt to improve assignments/functionresult reuse

Jonas Maebe jonas.maebe at elis.ugent.be
Sun Dec 16 10:52:40 CET 2007


On 16 Dec 2007, at 10:12, Florian Klaempfl wrote:

> Sergei Gorelkin schrieb:
>>
>> I am not sure that we need the particular DFA from optdfa.pas, but
>> something to reduce conservativeness of escape analysis is definitely
>> needed. Otherwise, temps that are needed for just one particular  
>> case of
>> x:=f(x) are being created almost everywhere.
>> DFA comes from Jonas's advice from one of the first messages:
>
> When Jonas posted this message first, I didn't understand because I
> thought I read it too quick, but after carefull reading, I still don't
> understand it :) The first paragraph talks about alias analysis while
> the second talks about dfa.

You need the latter to perform the former in a context-sensitive way.  
Context-sensitive means that the outcome of your analysis is tailored  
to a particular point in the procedure, rather than valid in any  
context/at any point in the procedure.

However, you can only do this if you know what has been executed  
before you reached that particular point, and that is where DFA comes  
in.

> Let it consider from a practical point :) Which piece of code makes  
> too
> conservative assumptions? The big if in ncgld.maybechangetemp?

No, it's the big if in tcallnode.maybe_create_funcret_node. The  
conservative/context-insensitive parts are the ti_addr_taken and  
addr_taken checks. These are computed globally for the entire current  
procedure, rather than statement per statement based on which  
statements can have been executed before the current statement is  
executed.


Jonas



More information about the fpc-devel mailing list