2011/9/23 mark florisson <markflorisso...@gmail.com>: > On 23 September 2011 06:02, Robert Bradshaw > <rober...@math.washington.edu> wrote: >> On Thu, Sep 22, 2011 at 9:36 PM, Vitja Makarov <vitja.maka...@gmail.com> >> wrote: >>> 2011/9/23 Robert Bradshaw <rober...@math.washington.edu>: >>>> On Thu, Sep 22, 2011 at 5:08 AM, Vitja Makarov <vitja.maka...@gmail.com> >>>> wrote: >>>>> 2011/9/22 Robert Bradshaw <rober...@math.washington.edu>: >>>>>> On Wed, Sep 21, 2011 at 1:20 AM, <robert....@exasol.com> wrote: >>>>>>> Hi Robert, >>>>>>> >>>>>>> Robert Bradshaw wrote: >>>>>>>> >>>>>>>> The warning seem correct to me, or is foo actually modifying the >>>>>>>> values of cya and cyb? (I suppose this could be possible by taking the >>>>>>>> address of the "passed by reference" arguments, but would seem like a >>>>>>>> *very* poor API design.) >>>>>>> >>>>>>> thanks for your fast answer! What made me came up with this issue is >>>>>>> that GCC/C++ will not complain in similar situations in C++ code (and >>>>>>> assumes foo() to initialize/change the value of cya/cyb). Thus, there >>>>>>> is an (arguable) difference in C++ compiler/Cython warnings. >>>>>> >>>>>> Yes, in C++ the called function can modify values passed by reference, >>>>>> so we need to add this exception to Cython. >>>>>> >>>>> >>>>> That could be hard because we can not always resolve function to check >>>>> its args at create-control-flow stage. >>>> >>>> Doesn't this always happen after declaration analysis? >>>> >>> >>> Sure. But before analyse expressions, so you have to manually lookup >>> entries for names and attributes. >> >> Ah, yes. >> >>> I see two cases here: global function call and method call. Both are >>> SimpleCallNodes. >> >> Yep, and the function could be an arbitrary expression... Ugly. >> >> - Robert >> _______________________________________________ >> cython-devel mailing list >> cython-devel@python.org >> http://mail.python.org/mailman/listinfo/cython-devel >> > > Can't you run the entire CF analysis after analyse expressions? I > think only the code generation needs the cf_* attributes?
I'm not sure here. CF solution could be used to improve type inference in the future. May be it's possible to split analyse expressions transform into parts: entry lookup and rest expression analysis. -- vitja. _______________________________________________ cython-devel mailing list cython-devel@python.org http://mail.python.org/mailman/listinfo/cython-devel