[FFmpeg-devel] [PATCH] remove gcc 3.3 workaround in swscale_template.c

Brad brad
Sun Sep 20 20:03:08 CEST 2009


On Sunday 20 September 2009 14:00:40 Diego Biurrun wrote:
> On Sun, Sep 20, 2009 at 07:12:44PM +0200, Reimar D?ffinger wrote:
> > On Sun, Sep 20, 2009 at 06:53:36PM +0200, Diego Biurrun wrote:
> > > There's an ugly preprocessor gcc 3.3 workaround in swscale_template.c:
> > >
> > >   /* GCC 3.3 makes MPlayer crash on IA-32 machines when using "g"
> > > operand here, which is needed to support GCC 4.0. */
> > >   #if ARCH_X86_64 && ((__GNUC__ > 3) || (__GNUC__ == 3 &&
> > > __GNUC_MINOR__ >= 4))
> > >
> > >                   :: "m" (src1), "m" (dst), "g" (dstWidth), "m"
> > >                   :: (xInc_shr16), "m" (xInc_mask),
> > >
> > >   #else
> > >
> > >                   :: "m" (src1), "m" (dst), "m" (dstWidth), "m"
> > >                   :: (xInc_shr16), "m" (xInc_mask),
> > >
> > >   #endif
> > >
> > > At the very least it should be updated to use the
> > > AV_GCC_VERSION_AT_LEAST macro from libavutil.  However, I would prefer
> > > to get rid of it completely.  If I understand the comment correctly,
> > > deleting the whole #else clause would be the way to achieve this. 
> > > Since I know little enough assembler to have no real idea what "g" and
> > > "m" operands are all about I'd like to hear an informed opinion.
> >
> > Huh? No, the upper line should give faster code but causes crashes due
> > to miscompilation with gcc 3.3
> > The lower line does not compile with gcc 4.0 on x86_64 but produces
> > correct code with 3.3.
> > At least that's what the comment says.
>
> OK, then I propose getting rid of the workaround completely.  I don't
> think x86_64 users with gcc 3.3 exist, so it's not worth the ugliness on
> our side.

Not true.

-- 
This message has been scanned for viruses and
dangerous content by MailScanner, and is
believed to be clean.




More information about the ffmpeg-devel mailing list