Fixed or forbidden register 3 (bx) was spilled
Zack Weinberg
zack@codesourcery.com
Wed Sep 12 14:44:00 GMT 2001
On Wed, Sep 12, 2001 at 05:29:05PM -0400, Jean-Marc Valin wrote:
> I know this has been discussed before, but I think my case is different.
> I get the error "fixed or forbidden register 3 (bx) was spilled for
> class BREG.", but I DO NOT clobber an input/output register.
You need to post a complete example. The most likely problem is that
because you are not letting the compiler pick the registers, it can't
satisfy constraints elsewhere in the function you are compiling. Try
__asm__ __volatile__ ("
prefetchnta (%0)
prefetchnta (%1)
prefetchnta 32(%0)
prefetchnta 32(%1)
prefetchnta 64(%0)
prefetchnta 64(%1)
prefetchnta 96(%0)
prefetchnta 96(%1)
prefetchnta 128(%0)
prefetchnta 128(%1)
"
: : "r" (means), "r" (vars)
);
Also try breaking this up into a series of asm() operations, again,
this allows the compiler more flexibility.
zw
More information about the Gcc-bugs
mailing list