On Tue, Jul 2, 2013 at 5:07 PM, Robert Bradshaw <rober...@gmail.com> wrote:
> On Tue, Jul 2, 2013 at 4:54 AM, Yury V. Zaytsev <y...@shurup.com> wrote: > > Hi, > > > > The simplest possible program using memory views compiles with a large > > number of warnings for me, even for a rather outdated version of gcc: > > > > def hello(int [:] a): > > print(a, "world") > > > > If I translate it with the latest released version of Cython like this: > > > > cython cpp.pyx > > cython --cplus cpp.pyx > > > > and compile like this: > > > > gcc -O3 -march=native -Wall -fPIC > -I/opt/ActivePython-2.7/include/python2.7 -c ./cpp.c -o cpp.o > > g++ -O3 -march=native -Wall -fPIC > -I/opt/ActivePython-2.7/include/python2.7 -c ./cpp.cpp -o cpp.o > > > > I get lots of warnings (see attached). > > > > It doesn't seem to be related to C++ as such, but rather it seems that > > the memory views code indeed somehow violates strict-aliasing rules. > > > > I'm not sure of how severe it is, but the documentation seems to suggest > > that this might even lead to incorrect results. > > > > Can this possibly be fixed in Cython and how important is that? Shall I > > create a bug report on the Trac? Is my only resort to test whether the > > compiler supports -fno-strict-aliasing and use that? > > You should compile with -fno-strict-aliasing--if you were using > distutils rather than gcc directly it should add the all necessary > flags for you. > > Aliasing different pointer types is necessary for Cython--it's how it > implements inheritance (in plain C, a PyObject* could be a pointer to > a list or dict or your own cdef class--pointer aliasing right there. > Also with memory views (and numpy arrays), the underlying data is > allocated as a char* and interpreted as a float* or int* or according > to the metadata in the array. > I think this is a relatively serious issue. Using pointer aliasing is not valid C, and we can usually get the same feature with union (which is usually supported). See http://stackoverflow.com/questions/11639947/is-type-punning-through-a-union-unspecified-in-c99-and-has-it-become-specified I have been bitten by this recently: how difficult of a change would it be ? David > - Robert > _______________________________________________ > cython-devel mailing list > cython-devel@python.org > http://mail.python.org/mailman/listinfo/cython-devel >
_______________________________________________ cython-devel mailing list cython-devel@python.org https://mail.python.org/mailman/listinfo/cython-devel