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>
