http://gcc.gnu.org/bugzilla/show_bug.cgi?id=59409
--- Comment #18 from H.J. Lu <hjl.tools at gmail dot com> --- (In reply to H.J. Lu from comment #17) > Perl_my_bcopy (len=31, to=0xf7fd801d "\021q", from=0x8023f0 "\264\005q") > is miscompiled when inlined: > > Old value = 19935280 > New value = 808464432 > Perl_my_bcopy (len=-1, to=0xf7fd803c "\260Vx", from=<optimized out>) at > util.c:1559 > 1559 while (len--) > > The last write is to 4-bytes at 0xf7fd803b: > > 442dd7: 83 fe 0b cmp $0xb,%esi > 442dda: 67 44 88 42 0b mov %r8b,0xb(%edx) It is OK since it is a byte store. > 442ddf: 74 27 je 442e08 <Perl_pp_rv2av+0x898> > > (gdb) p/x $edx > $300 = 0xf7fd8030 > (gdb) p/x $edx + 0xb > $301 = 0xf7fd803b > (gdb) > > But the last byte should be written at 0xf7fd801d + 30 == 0xf7fd803b. > There are 3 byte overflow for write. I will see if I can write a > testcase.