2012/1/24 Robert Bradshaw <[email protected]>: > On Tue, Jan 24, 2012 at 6:09 AM, Vitja Makarov <[email protected]> > wrote: >> 2012/1/24 mark florisson <[email protected]>: >>> On 24 January 2012 11:37, Konrad Hinsen <[email protected]> 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 >>>> [email protected] >>>> 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.
Seems like a hack to me. >> >> >> May be it's better to run OptimizeBuiltinCalls before >> AnalyseExpressionsTransform? > > Doesn't OptimizeBuiltinCalls take advantage of type information? Yes, it does :( So as Mark said the problem is CascadedAssignmentNode.coerced_rhs_list is created before rhs is updated. -- vitja. _______________________________________________ cython-devel mailing list [email protected] http://mail.python.org/mailman/listinfo/cython-devel
