This is the mail archive of the
mailing list for the GCC project.
Re: Unexpected offsets when eliminating SP
- From: Jim Wilson <wilson at codesourcery dot com>
- To: Michael Hope <michaelh at juju dot net dot nz>
- Cc: gcc at gcc dot gnu dot org
- Date: Mon, 04 May 2009 10:30:01 -0700
- Subject: Re: Unexpected offsets when eliminating SP
- References: <firstname.lastname@example.org> <49F8ED19.email@example.com> <firstname.lastname@example.org>
Michael Hope wrote:
[(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
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.