[Cython] Bug in Cython producing incorrect C code

Robert Bradshaw robertwb at math.washington.edu
Tue Jan 24 18:36:31 CET 2012


On Tue, Jan 24, 2012 at 6:09 AM, Vitja Makarov <vitja.makarov at gmail.com> wrote:
> 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?

Doesn't OptimizeBuiltinCalls take advantage of type information?


More information about the cython-devel mailing list