Making LLVM happy: memmove() in the kernel

Roman Divacky rdivacky at freebsd.org
Sat Feb 28 01:58:31 PST 2009


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


More information about the freebsd-arch mailing list