[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
RE: [avr-gcc-list] Bug 31786 spill in class 'BASE_POINTER_REGS'
From: |
Weddington, Eric |
Subject: |
RE: [avr-gcc-list] Bug 31786 spill in class 'BASE_POINTER_REGS' |
Date: |
Tue, 1 Jan 2008 17:06:48 -0700 |
> -----Original Message-----
> From: Andy H [mailto:address@hidden
> Sent: Tuesday, January 01, 2008 3:02 PM
> To: Weddington, Eric
> Cc: Andrew Hutchinson; address@hidden
> Subject: Re: [avr-gcc-list] Bug 31786 spill in class
> 'BASE_POINTER_REGS'
>
> Here are changes.
> Since Im using different GCC release (4.3 experimental) and
> have a few debugging dump spots added, I cant give you a
> proper patch. But since it only involves 3 lines I have
> listed it below:
>
> Nothing crashed and no adverse code size problem on the stuff
> I tried. It got smaller but some (all) of that might have
> been GCC 4.3. For example AVR butterfly .text size went from
> 13722 to 13516. All GCC libraries compiled without incident.
>
> In avr.h around line 450 or so
>
> #define LEGITIMIZE_RELOAD_ADDRESS(X, MODE, OPNUM, TYPE,
> IND_LEVELS, WIN) \
> ..
> ..
> if (fit) \
> { \
> if (reg_equiv_address[REGNO (XEXP (X, 0))] != 0)
> \
> { \
> int regno = REGNO (XEXP (X, 0)); \
> rtx mem = make_memloc (X, regno); \
> push_reload (XEXP (mem,0), NULL, &XEXP (mem,0),
> NULL, \
> POINTER_REGS, Pmode, VOIDmode, 0, 0, \
> 1, ADDR_TYPE (TYPE)); \
> push_reload (mem, NULL_RTX, &XEXP (X, 0), NULL, \
> BASE_POINTER_REGS, GET_MODE (X), VOIDmode, 0, 0, \
> OPNUM, TYPE); \
> goto WIN; \
> } \
> if(0) { \
> push_reload (XEXP (X, 0), NULL_RTX, &XEXP (X, 0), NULL, \
> BASE_POINTER_REGS, GET_MODE (X), VOIDmode, 0,
> 0, \
> OPNUM, TYPE); \
> goto WIN; \
> } \
> \
> } \
Why the "if(0)" block? This is essentially a nop and probably should be
removed.
Eric