This is the mail archive of the
gcc@gcc.gnu.org
mailing list for the GCC project.
Re: A question about unable to generate reloads
- From: Ian Lance Taylor <ian at airs dot com>
- To: Eric Fisher <joefoxreal at gmail dot com>
- Cc: gcc at gcc dot gnu dot org
- Date: 31 Oct 2005 20:51:08 -0800
- Subject: Re: A question about unable to generate reloads
- References: <d6afecde0510311740g36eee493n@mail.gmail.com>
Eric Fisher <joefoxreal@gmail.com> writes:
> Such a problem is difficult to find the reason. But can you give some
> suggestion about the possible matter? This is the information on my
> port. Thanks a lot.
>
> dp-bit.c: In function `__muldf3':
> dp-bit.c:957: error: unable to generate reloads for:
> (insn 416 415 417 20 dp-bit.c:874 (set (reg:SI 3 $3 [296])
> (ltu:SI (subreg:SI (reg:DI 12 $12 [294]) 0)
> (subreg:SI (reg/v:DI 263 [ pp_ll ]) 0))) 74 {sltu_internal} (insn_li
> st 415 (nil))
> (nil))
> dp-bit.c:957: internal compiler error: in find_reloads, at reload.c:3690
It is possible that for one of your alternatives you have an operand
predicate which accepts, e.g., (subreg:SI (reg:DI) 0) but that
alternative does not have a constraint which matches that operand. In
general if there an operand is accepted by the predicate and the
pattern condition, there needs to be a letter in the constraints which
can be made to match the operand.
It is also possible that the predicate doesn't match, but there are no
constraint letters which match a register class which gcc can load the
operand into, so gcc has no idea what to do.
Ian