[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

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: