Re: [Cython] Fused Types
mark florisson, 02.05.2011 11:22:
> On 2 May 2011 11:08, Stefan Behnel wrote:
>> Robert Bradshaw, 30.04.2011 08:16:
>>>
>>> On Fri, Apr 29, 2011 at 8:04 AM, mark florisson
>>>>
>>>> With the type matching it matches on exactly 'if src_type is
>>>> dst_type:' so you can't use 'and' and such... perhaps I should turn
>>>> these expression into a node with the constant value first and then
>>>> see if the result of the entire expression is known at compile time?
>>>
>>> Yes, that's exactly what I was thinking you should do.
>>
>> For now, you could simply (try to) re-run the ConstantFolding transform
>> after the type splitting. It will evaluate constant expressions and also
>> drop unreachable branches from conditionals.
>
> Right thanks! I actually ran it on the condition only, as I overlooked
> its branch pruning capability (sometimes I see 'if (1)' generated
> code, so that's probably because that happens after ConstantFolding).
... or because something generates that explicitly (e.g. to simplify some
specific code generation), but I couldn't find this with a quick grep right
now. I once put a C for-loop into straight sequential argument unpacking
code, so that I could "break" out of it at any point, rather than using
gotos and labels for that. But that was only half-way hackish because that
particular code mimics an unrolled loop anyway.
In the future, Vitja's dead code removal branch will handle branch pruning
anyway. I just put it into the ConstantFolding transform at the time as it
(Continue reading)