[Cython] Bug in Cython producing incorrect C code

Vitja Makarov vitja.makarov at gmail.com
Tue Jan 24 15:09:04 CET 2012


2012/1/24 mark florisson <markflorisson88 at gmail.com>:
> On 24 January 2012 11:37, Konrad Hinsen <konrad.hinsen at fastmail.net> wrote:
>> Compiling the attached Cython file produced the attached C file which
>> has errors in lines 532-534:
>>
>>  __pyx_v_self->xx = None;
>>  __pyx_v_self->yy = None;
>>  __pyx_v_self->zz = None;
>>
>> There is no C symbol "None", so this doesn't compile.
>>
>> I first noticed the bug in Cython 0.15, but it's still in the latest
>> revision from Github.
>>
>> Konrad.
>>
>> _______________________________________________
>> cython-devel mailing list
>> cython-devel at python.org
>> http://mail.python.org/mailman/listinfo/cython-devel
>>
>
> Hm, it seems the problem is that the call to the builtin float results
> in SimpleCallNode being replaced with PythonCApiNode, which then
> generates the result code, but the list of coerced nodes are
> CloneNodes of the original rhs, and CloneNode does not generate the
> result code of the original rhs (i.e. allocate and assign to a temp),
> which results in a None result.
>
> Maybe CascadedAssignmentNode should replace CloneNode.arg with the
> latest self.rhs in generate_assignment_code? I'm not entirely sure.


May be it's better to run OptimizeBuiltinCalls before
AnalyseExpressionsTransform?

I have a patch that initializes NameNode's entry at ControlFlowAnalysis stage.


-- 
vitja.


More information about the cython-devel mailing list