Jan-Benedict Glaw <[email protected]> wrote on 2010/04/30 16:10:42:
>
> On Fri, 2010-04-30 16:08:15 +0200, Joakim Tjernlund
> <[email protected]> wrote:
> > Is memcpy supposed to work when the src and dest are the same:
> > memcpy(p, p, 100);
>
> It may work, but you cannot rely on it. Use memmove() alternatively.
My view too, but gcc 3.4.6 on gcc does this:
struct my_struct {
long a100[100];
};
static inline
func(struct my_struct *h1, struct my_struct *h2)
{
*h1 = *h2;
}
mytest(struct my_struct *my_h1)
{
func(my_h1, my_h1);
}
-------------
.file "tst.c"
.section ".text"
.align 2
.globl mytest
.type mytest, @function
mytest:
mflr 0
stwu 1,-16(1)
mr 4,3
li 5,400
stw 0,20(1)
bl memcpy
lwz 0,20(1)
addi 1,1,16
mtlr 0
blr
.size mytest, .-mytest
.section .note.GNU-stack,"",@progbits
.ident "GCC: (GNU) 3.4.6 (Gentoo 3.4.6-r2, ssp-3.4.6-1.0, pie-8.7.9)"