This is the mail archive of the gcc@gcc.gnu.org mailing list for the GCC project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

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


Is it possible to disable the register allocator completly? 
IMO, GCC **should not** rely on any schedurling.  Would it 
be possible to, in a worst-case scenario, force GCC use the 
stack or even use an extra linker symbol.  _I_ don't know 
of any processor modifications that can cause that to 
fail.  

Samuel Lauber

P.S. IMO, `can't find a register' should be an ICE.  

>> 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.

-- 
_____________________________________________________________
Web-based SMS services available at http://www.operamail.com.
From your mailbox to local or overseas cell phones.

Powered by Outblaze


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]