avr-gcc-list
[Top][All Lists]
Advanced

[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




reply via email to

[Prev in Thread] Current Thread [Next in Thread]