Dear gcc developers, I am new to this list. I tried to use the auto-vectorization (4.2.1 (SUSE Linux)) but unfortunately with limited success. My code is bassically a matrix library in C++. The vectorizer does not like the member variables. Consider this code compiled with gcc -ftree-vectorize -msse2 -ftree-vectorizer-verbose=5 -funsafe-math-optimizations.... that gives basically "not vectorized: unhandled data-ref" <C++ code snippet> class P{ public: P() : m(5),n(3) { double *d = data; for (int i=0; i<m*n; i++) d[i] = i/10.2; } void test(const double& sum); private: int m; int n; double data[15]; };
void P::test(const double& sum) { double *d = this->data; for(int i=0; i<m*n; i++){ d[i]+=sum; } } </C++ code snippet> whereas the more or less equivalent C version works just fine: <C code snippet> int m=5; int n=3; double data[15]; void test(const double& sum) { int mn = m*n; for(int i=0; i<mn; i++){ data[i]+=sum; } } </C code snippet> Is there a fundamental problem in using the vectorizer in C++? Regards! Georg
signature.asc
Description: This is a digitally signed message part.