This is the mail archive of the gcc@gcc.gnu.org mailing list for the GCC project.
Index Nav: | [Date Index] [Subject Index] [Author Index] [Thread Index] | |
---|---|---|
Message Nav: | [Date Prev] [Date Next] | [Thread Prev] [Thread Next] |
Other format: | [Raw text] |
On Sun, 26 May 2002, Jan Hubicka wrote: > Sometimes gcc suceeds to confuse itself to believe that accesses to same > array are disjunct. WOuld be possible to see the source? I was able to make a small example. The problem is, in my opinion, in the following code form include/g++-v3/bits/stl_algobase.h 232 template<typename _RandomAccessIter, typename _OutputIter> 233 inline _OutputIter 234 __copy(_RandomAccessIter __first, _RandomAccessIter __last, 235 _OutputIter __result, 236 random_access_iterator_tag) 237 { 238 typedef typename iterator_traits<_RandomAccessIter>::difference_type 239 _Distance; 240 for (_Distance __n = __last - __first; __n > 0; --__n) { <<this 241 *__result = *__first; <<loop 242 ++__first; << 243 ++__result; << 244 } 245 return __result; 246 } But perhaps I misunderstood the debugging info. This is the sample code: #include <vector> class test { public: int t1, t2; test(int t1_, int t2_) : t1(t1_), t2(t2_) {} test( const test &other) : t1(other.t1), t2(other.t2) {} }; int main(){ std::vector<test> t1,t2; t1.push_back(test(1,2)); t1.push_back(test(2,3)); t1.push_back(test(4,5)); t1.push_back(test(9,0)); t1.push_back(test(-1,42)); std::copy(t1.begin(), t1.end(), t2.begin() ); return 0; } Here the noticeable assembler code: L..151: .ei "/usr/oss/apps/gcc-3.1/include/g++-v3/bits/stl_vector.h" .bi "/usr/oss/apps/gcc-3.1/include/g++-v3/bits/stl_algobase.h" .line 237 .eb 493 .eb 493 .bb 237 .bb 237 .bb 237 .bb 237 .bb 237 .bb 237 .bb 237 .bb 237 .bb 237 .bb 237 .stabx "__first:r1681",11,131,0 .stabx "__result:r1681",10,131,0 lwz 11,56(1) .line 240 .bb 240 .bb 240 .stabx "__n:r12",66,131,0 lwz 0,60(1) .line 237 .eb 240 .eb 240 lwz 10,104(1) .line 240 .bb 240 .bb 240 .stabx "__n:r12",66,131,0 subf 0,11,0 srawi. 9,0,3 mtctr 9 ble- 0,L..245 L..253: .line 241 lwz 0,0(11) lwz 9,4(11) .line 242 addi 11,11,8 .line 241 stw 0,0(10) stw 9,4(10) .line 243 addi 10,10,8 .line 241 dcbt 0,28 < =========== dcbtst 0,28 < =========== .line 240 bdnz L..253 L..245: .ei "/usr/oss/apps/gcc-3.1/include/g++-v3/bits/stl_algobase.h" I used this build command: /usr/oss/apps/gcc-3.1/bin/g++ -O2 -fprefetch-loop-arrays -S prefetch.cc -mcpu=604e -g2 Attached the complete assembly. mit freundliche Gruessen / kind regards Andreas Conz WWW http://www.neuro.informatik.uni-kassel.de/~andreasc e-mail andreasc@neuro.informatik.uni-kassel.de
Attachment:
prefetch.s.gz
Description: Binary data
Index Nav: | [Date Index] [Subject Index] [Author Index] [Thread Index] | |
---|---|---|
Message Nav: | [Date Prev] [Date Next] | [Thread Prev] [Thread Next] |