Issue with reload
Segher Boessenkool
segher@kernel.crashing.org
Tue Nov 3 17:23:57 GMT 2020
Hi Henri,
On Tue, Nov 03, 2020 at 04:25:32PM +0100, Henri Cloetens wrote:
> > 583: r990:SI=zero_extend(r378:SI#0)
>
> - The statement (r378:SI#0) takes the '0' subreg form reg r378:SI.
> (shorthand in the reload dump.)
And it doesn't say what mode subreg it is (QImore or HImode here).
There are multiple cases like this, where the abbreviated RTL is not
conclusive (so cannot be parsed back).
> > (define_insn "zero_extendhisi2_internal"
> > [(set (match_operand:SI 0 "gpc_reg_operand" "=r,r,r")
> > (zero_extend:SI (match_operand:HI 1 "movhi_operand_0"
> "Z,C,r")))]
>
> - However, the predicate "r" in the statement above, does not allow a
> subreg.
Yes it does. See register_operand in recog.c for example. It is of
course possible your gpc_reg_operand doesn't allow it (bad idea, but I
don't know your code).
You would normally start the gpc_reg_operand code with something like
if (SUBREG_P (op))
op = SUBREG_REG (op);
(as well as pretty much all other register operand predicates).
Segher
More information about the Gcc-help
mailing list