[MPlayer-users] [BUG] asm uses too many registers in swscale_template.c?

Guillaume POIRIER poirierg at gmail.com
Sun Jun 19 11:46:20 CEST 2005


Hi,

On 6/19/05, Reimar Döffinger <Reimar.Doeffinger at stud.uni-karlsruhe.de> wrote:
> Hi,
> On Sat, Jun 18, 2005 at 09:58:01PM -0700, Pandora wrote:
> > Hello, I was trying out the nifty new gcc compiler (version 3.4.4,
> > SSP, PIE) when I discovered that mplayer wouldn't compile!  This is
> > the error I ran across:
> >
> > swscale_template.c: In function `swScale_MMX2':
> > swscale_template.c:2522: error: can't find a register in class `GENERAL_REGS' while reloading `asm'
> > swscale_template.c:2522: error: can't find a register in class `GENERAL_REGS' while reloading `asm'
> 
> We won't fix it (because we can't really, at least not without sacrificing
> speed). Use gcc 2.95, I never heard that kind of problem with those.
> 3.4.3 always worked for me , too....

[..]

Mmmm... That might be my fault: I committed a patch to
swscale_template.c to support GCC4 on AMD64. I was supposed to impact
only the AMD64 port, but apparently, this is not the case. :-/

Pandora, changing this line:
:: "m" (src1), "m" (dst), "p" ((long)dstWidth), "m" (xInc_shr16), "m"
(xInc_mask),
to
:: "m" (src1), "m" (dst), "mp" ((long)dstWidth), "m" (xInc_shr16), "m"
(xInc_mask),

Should do the trick (at least, for my GCC3.4 and 4.0

If it still doesn't, try:
:: "m" (src1), "m" (dst), "m" ((long)dstWidth), "m" (xInc_shr16), "m"
(xInc_mask),
(which reverts my patch all together, Grrr!)

Please keep us posted about the result of each fix.

Guillaume
-- 
A woman isn't complete without a man.
But where do you find a man - a real man - these
days?
Only at #mplayerdev on the freenode IRC network.
 -- Lauren Bacall
http://www.brainyquote.com/quotes/quotes/l/laurenbaca127064.html




More information about the MPlayer-users mailing list