On Fri, Nov 18, 2011 at 6:18 AM, Jan Hubicka <hubi...@ucw.cz> wrote: >> I found another bug in current implementation. A patch for it doesn't >> cure i686-linux- bootstrap, but fixes fails on some tests (see >> attached). >> >> The problem was that we tried to add runtime tests for alignment even >> if both SRC and DST had unknown alignment - in this case it could be >> impossible to make them both aligned simultaneously, so I think it's >> easier to even not try to use aligned SSE-moves at all. Generation of >> prologues with runtime tests could be used only if at least one >> alignment is known - otherwise it's incorrect. Probably, generation of >> such prologues could be removed from MEMMOV at all for now. > > The prologues always align the destination as it helps more than aligning > source on most chips. I do not see problem with that. But for SSE either we > should arrange unaligned load opcodes (that is what I see in generated code, > but I > guess it depends on -march setting) or simply disqualify the sse_loop > algorithm > in decide_alg when alignment is not know. >> >> Though, even with this fix i686-bootstrap still fails. Configure for >> the bootstrap-fail reproducing: >> CC="gcc -m32" CXX="g++ -m32" ../configure --with-arch=core2 >> --with-cpu=atom --prefix=`pwd` i686-linux --with-fpmath=sse >> --enable-languages=c,c++,fortran > > Default i686-linux bootstrap was working for me. I will try your setting but > my time today evening and at weekend is limited. >
Given that x86 memset/memcpy is still broken, I think we should revert it for now. -- H.J.