[Ffmpeg-devel] [PATCH] avoid useless memcpy with src==dst (valgrind complains)
Wolfram Gloger
wmglo
Sun Jul 23 16:24:17 CEST 2006
Hi,
> On Sun, Jul 23, 2006 at 11:07:42AM +0100, M?ns Rullg?rd wrote:
> > > Huh? The problem is the assignment is obviously replaced by a memcpy by the
> > > compiler,
> >
> > Depends on the struct. For small structs the compiler will generate
> > load/store insns directly, and it can use knowledge of alignment to optimize
> > things.
>
> Well, gcc 4.1.1 in this cases uses an memcpy.
Well, my gcc-4.1.1 doesn't:
gcc version 4.1.1 20060511 (prerelease) (Debian 4.1.0-4)
I cannot find any memcpy in the generated assembly for
avcodec_default_release_buffer (double-checked).
> > If the compiler does that it's broken.
>
> Maybe.
Not maybe, definitely!
> Though for src == dst I doubt any memcpy function will break
> stuff. And for the overlapping case when src != dst does the C standard
> specify the behaviour?
Using memcpy() on overlapping objects is undefined behaviour
(7.21.2.1#2).
> Anyway, this is not really what interests me, I'd prefer to know that
> even if it is a compiler bug, may I apply the patch or do you prefer if
> I don't?
Patch looks fine to me anyway, but I think it should be investigated
how on earth memcpy() is generated here.
Regards,
Wolfram.
More information about the ffmpeg-devel
mailing list