Bug#619963: gcc-4.6: wrongly optimizes memmove() into memcpy()
Le lundi 28 mars 2011 21:06:31 Matthias Klose, vous avez écrit :
> severity 619963 important
> thanks
>
> On 28.03.2011 19:10, Remi Denis-Courmont wrote:
> > Package: gcc-4.6
> > Version: 4.6.0-1
> > Severity: grave
> > Justification: renders package unusable
>
> does it?
It does not compile Debian's "own" source code base correctly on i386.
What more do you need?
> > Trying to compile VLC media player using Debian gcc-4.6.
> > It turns out that the compiler is silently replacing memmove() calls
> > with memcpy() ones, when it is clearly NOT a legal optimization. The
> > issue was uncovered with valgrind. For instance, this one is failing,
> >
> > even though both source and destination obviously overlap:
> > memmove( &p_aout->pp_inputs[i_input], &p_aout->pp_inputs[i_input +
> > 1],
> >
> > (AOUT_MAX_INPUTS - i_input - 1) * sizeof(aout_input_t *) );
> >
> > This results in memory corruption at run-time and eventually crashes.
> >
> > Compiler flags used were: -g -O2 -ffast-math -funroll-loops -fPIC
> > I can provide the full .i file if needed.
>
> please could you provide a test case?
I don't have that at hand, unless you count the entire VLC a test case.
--
Rémi Denis-Courmont
Looking for a job: http://www.remlab.info/
http://fi.linkedin.com/in/remidenis
Reply to: