Skip site navigation (1)Skip section navigation (2)
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>