Unexpected offsets when eliminating SP

Jim Wilson wilson@codesourcery.com
Mon May 4 17:30:00 GMT 2009


Michael Hope wrote:
> (define_expand "reload_outsi"
>   [(parallel [(match_operand 0 "memory_operand" "=m")

Perhaps the problem is that the output operand is an unallocated 
pseudo-reg instead of a MEM.  Looking at other targets that have 
reload_out* patterns, I see that they have predicates that accept both 
mem and pseudo-regs here.

> I'm a bit confused with the documentation versus the ports.  For
> example, REGNO_MODE_CODE_OK_FOR_BASE_P doesn't appear to need a strict
> form according to the documentation but the bfin port has a strict and
> non-strict version.  Most of the ports have a REG_OK_FOR_BASE_P macro
> with strict and non-strict versions macro but it's not documented,
> isn't used, and might have been removed around gcc 4.0.

The current docs say that REGNO_MODE_CODE_OK_FOR_BASE_P has strict and 
non-strict variants.

The REG_OK_FOR_BASE_P stuff is obsolete.  That is something that could 
be cleaned up.  However, since most ports are both defining it and using 
it in the GO_IF_LEGITIMATE_ADDRESS macros, it is something that will 
take some work, and it might be simpler to just leave the macros there.

Jim



More information about the Gcc mailing list