This is the mail archive of the
gcc@gcc.gnu.org
mailing list for the GCC project.
Re: Reload problem & question
- To: Michael Collison <mkc at maker dot com>
- Subject: Re: Reload problem & question
- From: Jeffrey A Law <law at cygnus dot com>
- Date: Tue, 19 Oct 1999 02:35:38 -0600
- cc: gcc at gcc dot gnu dot org
- Reply-To: law at cygnus dot com
In message <37FBD85D.55346D87@maker.com>you write:
> The memory reference is an illegal operand on my target processor. I am
> assuming that this has something to do with register elimination, I just
> don't know what can be done about this case. Why didn't reload verify
> that the insn was legal?
I doubt it's from register elimination. I'd bet that reg74 did not get
a hard register and was spilled to the stack.
> What is most disturbing is that the problem was found in
> 'output_operand_lossage'. It seems 'final_scan_insn' should have caught
> it but when it calls 'recog_memoized' it does not try to match the
> pattern because it has already matched the insn previously. Similarly
> 'constrain_operands' does not check the 'mem' against
> 'GO_IF_LEGITIMATE_ADDRESS'. This seems wrong.
reload does a lot of things that might seem wrong like not re-recognizing
insns it modifies. In fact, most insns created by reload are never
examined.
Anyway, start with the simple. What are the predicates for your movsf
insn. Do they claim (mem (plus (mem ...))) is a valid operand. Then
start looking at your constraints.
jeff