Memset/memcpy patch

H.J. Lu hjl.tools@gmail.com
Fri Nov 18 17:36:00 GMT 2011


On Fri, Nov 18, 2011 at 6:18 AM, Jan Hubicka <hubicka@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.



More information about the Gcc-patches mailing list