This is the mail archive of the gcc-patches@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]

Re: Memset/memcpy patch


> 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.

Honza


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]