gcc-3.3 problem with reloading byte into address register on ColdFire

Jim Wilson wilson@tuliptree.org
Fri Jul 4 02:27:00 GMT 2003


Peter Barada wrote:
> I've stumbled across a problem with reload trying to load a byte into
> an address register, something legal on m68k, but illegal on ColdFire:

There is nothing in LIMIT_RELOAD_CLASS or PREFERRED_RELOAD_CLASS to 
handle this.  Note that both of them handle the case where CLASS != 
ADDR_REGS.  I.e., if we don't have ADDR_REGS, then we force it into 
DATA_REGS because we know both DATA_REGS is OK.  And if it is ADDR_REGS 
then we leave it alone because we know ADDR_REGS is OK.  It looks like 
the 5200 specific movqi pattern is bogus.

I'd wonder if the problem is BASE_REG_CLASS which is ADDR_REGS.  There 
is MODE_BASE_REG_CLASS which lets you define one which is mode specific.

Otherwise, maybe you need to define CANNOT_CHANGE_MODE_CLASS to prevent 
reload from changing an ADDR_REGS/SImode reference to a ADDR_REGS/QImode 
reference when TARGET_5200.

Jim



More information about the Gcc mailing list