register_operand in non-strict RTL

Georg-Johann Lay via Gcc <[email protected]>
Newsgroups gmane.comp.gcc.devel
Message-ID <[email protected]>
My question is this:

Is it allowed in non-strict RTL that a register_operand contains
a REG_P register that doesn't satisfy the constraint of the
operand? Given that the REG meets register_operand of course,
and that the machine mode matches.

To all of my knowledge, the answer is "yes": Prior to register
allocation, what matters are the insn predicates, not the insn
constraints.

In particular, a pass that operates on non-strict RTL map propagate
a (hard) register into a register_operand provided the predicate is
true, even in cases where the constraint doesn't match.

It's clear that such a transformation makes the register allocator's
life harder, but RA is supposed to handle that.  Correct?

Context is that I am getting ICEs from RA for some __RTL test cases
that start at "ira".

Kind regards,

Johann
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.