On Tue, Jan 25, 2011 at 11:49 AM, Vitja Makarov <vitja.maka...@gmail.com> wrote:
> 2011/1/25 Stefan Behnel <stefan...@behnel.de>:
>> Vitja Makarov, 25.01.2011 10:01:
>>> 2011/1/25 Stefan Behnel:
>>>>      def x():
>>>>          do_some_stuff()
>>>>
>>>>          return # disable rest of code, e.g. during debugging
>>>>
>>>>          unreachable_code()
>>>>
>>>> Cython shouldn't bother generating dead code here (even if the C compiler
>>>> would drop it anyway).
>>>
>>> That should be rather easy to do: remove all the nodes in StatList
>>> after: break, continue, return, raise, something else?
>>
>> Careful, this may involve recursive propagation through helper nodes. The
>> tree isn't always as simple as that.
>>
>> I think an attribute "is_terminator" on Nodes might do the job. It's set to
>> False by default and to True on all nodes you mentioned above, and is
>> inherited by StatListNode if its last node is a terminator (while dropping
>> its remaining child nodes at the same time) and by all helper nodes that
>> contain StatListNodes. This could be done in analyse_types() (or maybe
>> earlier?).
>>
>
> May be it could be placed in StatNodeList.analyse_flow_control()?

This is crufty code that should probably be removed, I wouldn't count
on using it too much.

- Robert
_______________________________________________
Cython-dev mailing list
Cython-dev@codespeak.net
http://codespeak.net/mailman/listinfo/cython-dev

Reply via email to