Date: Sat, 28 Feb 2009 10:55:02 +0100 From: Roman Divacky <rdivacky@freebsd.org> To: Bruce Evans <brde@optusnet.com.au> Cc: Ed Schouten <ed@80386.nl>, Arch <freebsd-arch@freebsd.org>, FreeBSD@freebsd.org, Andriy Gapon <avg@icyb.net.ua> Subject: Re: Making LLVM happy: memmove() in the kernel Message-ID: <20090228095502.GA62459@freebsd.org> In-Reply-To: <20090228175724.D14305@delplex.bde.org> References: <20090227131155.GE19161@hoeg.nl> <20090227131221.GA60215@freebsd.org> <49A80F4D.8000406@icyb.net.ua> <20090227132242.4ef6a633@kan.dnsalias.net> <20090228175724.D14305@delplex.bde.org>
next in thread | previous in thread | raw e-mail | index | archive | help
On Sat, Feb 28, 2009 at 06:43:54PM +1100, Bruce Evans wrote: > On Fri, 27 Feb 2009, Alexander Kabaev wrote: > > >On Fri, 27 Feb 2009 18:05:33 +0200 > >Andriy Gapon <avg@icyb.net.ua> wrote: > > > >>on 27/02/2009 15:12 Roman Divacky said the following: > >>>On Fri, Feb 27, 2009 at 02:11:55PM +0100, Ed Schouten wrote: > >>>>Hi all, > >>>> > >>>>The FreeBSD+LLVM folks* noticed Clang generates calls to memmove() > >>>>by itself. I have yet to confirm this, but I assume this is done > >>>>when performing copies of structs greater than a certain size. In > > Why would Clang be that broken? Structs cannot overlap, so they can structs can overlap: struct foo { double x[100]; }; void T(struct foo *F, struct foo* G) { *F = *G; } when F equals to G
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?20090228095502.GA62459>