[Cython] Control flow graph

Dag Sverre Seljebotn dagss at student.matnat.uio.no
Tue Feb 15 09:49:02 CET 2011


On 02/15/2011 08:21 AM, Robert Bradshaw wrote:
> On Mon, Feb 14, 2011 at 9:49 PM, Vitja Makarov<vitja.makarov at gmail.com>  wrote:
>    
>> 2011/2/15 Robert Bradshaw<robertwb at math.washington.edu>:
>>      
>>> On Sun, Feb 13, 2011 at 11:40 PM, Vitja Makarov<vitja.makarov at gmail.com>  wrote:
>>>        
>>>> Hi!
>>>>
>>>> In order to implement "reaching definitions" algorithm.
>>>> I'm now working on control-flow (or data-flow) graph.
>>>>
>>>> Here is funny picture made with graphviz ;)
>>>>
>>>> http://piccy.info/view3/1099337/ca29d7054d09bd0503cefa25f5f49420/1200/
>>>>          
>>> Cool. Any plans on handling exceptions?
>>>
>>>        
>> Sure, but I don't have much time for this :(
>>
>> Linear block inside try...except body should be split by assignments
>> and each subblock should point to exception handling entry point.
>>      
> Would every possible failing sub-expression have to point to the
> exception handling point(s)? I suppose it depends on whether you'll be
> handling more than assignment tracking.
>
>    
>> As result I want to have set of possible assignments for each NameNode position.
>>
>> So handling of uninitialized variables, unused, unused results should be easy,
>> later it may help to implement local variable deletion. And guess that
>> could help type inference.
>>      
> Ye.
>    

I'm thinking that transforming NameNode + various assignment/lookup 
nodes into "opcode nodes" such as SetLocalNode, GetLocalNode, 
SetGlobalNode, GetAttributeNode and so on would be a natural step to 
make such code cleaner. Then (after an isolated transform doing this) 
the logic would just need to act on individual nodes, not combination of 
nodes.

Just an idea.

Dag Sverre


More information about the cython-devel mailing list