-march prescott: GENERAL_REGS error; but -msseX Ok ?

Falk Hueffner falk@debian.org
Sun Jan 30 01:14:00 GMT 2005


"sean darcy" <seandarcy@hotmail.com> writes:

> i386/dsputil_mmx.c: In function `h263_h_loop_filter_mmx':
> i386/dsputil_mmx.c:634: error: can't find a register in class `GENERAL_REGS'
> while reloading `asm'
> dmesg | less make[2]: *** [dsputil_mmx.o] Error 1
>
> My cflags are -mtune=prescott -O3 -funit-at-a-time -ffast-math
> -fomit-frame-pointer
>
> But  -O3 -funit-at-a-time -ffast-math -fomit-frame-pointer -mmmx -msse
> -msse2 -msse3 works!
>
> config/i386.c has:
> {"prescott", PROCESSOR_NOCONA, PTA_SSE | PTA_SSE2 | PTA_SSE3
> 				        | PTA_MMX | PTA_PREFETCH_SSE}
>
> So is the only reason prescott doesn't work is prefetch-sse.  

No, that is a red herring. The different instruction scheduling causes
the register allocator to randomly fail or not. There's no way for us
to fix this reliably, the asm must be changed to constrain the
register allocator less.

-- 
	Falk



More information about the Gcc mailing list