This is the mail archive of the
gcc@gcc.gnu.org
mailing list for the GCC project.
Re: Help with lra
- From: Vladimir Makarov <vmakarov at redhat dot com>
- To: shmeel gutl <shmeelgutl at shmuelhome dot mine dot nu>, gcc at gcc dot gnu dot org
- Date: Tue, 2 Aug 2016 17:10:00 -0400
- Subject: Re: Help with lra
- Authentication-results: sourceware.org; auth=none
- References: <6cdb3b73-daf4-6d55-a704-919751ff248a@shmuelhome.mine.nu>
On 08/02/2016 04:41 PM, shmeel gutl wrote:
I am trying to enable lra for a propriety backend. I ran into one
problem that I can't solve. In lra-constraints.c:split_reg
lra_create_new_reg can be called with a hard code rclass of NO_REGS.
It then queues a move instruction of the type
set TYPE:new_reg TYPE:old_reg
But the NO_REGS rclass stops new_reg from matching a register
constraint and forces a reload. But the reload will have the same
problem. This recurses until the recursion limit is hit.
What is my backend missing that will allow a register assignment to
new_reg?
NO_REGS in this case means memory and the generated RTL move insn
finally should be a target load or store insn. It is hard to say w/o
looking at the code but, probably, your move insn descriptions do not
have memory constraints (or these constraints are quite specific).