On 8/8/24 6:26 AM, Stefan Schulze Frielinghaus wrote:
On Thu, Aug 08, 2024 at 06:03:13AM -0600, Jeff Law wrote:
On 8/8/24 5:15 AM, Stefan Schulze Frielinghaus via Gcc wrote:
However `(reg:DI 61 [ MEM[(const union T *)p_2(D)] ])` referencing the
same pseudo in a different mode is not substituted in insn 6 which
leads in the following to an error. The insn is emitted in
s390_expand_insv() during
There can only be a single instance of a given pseudo, if you have multiple
instances, that's the bug.
Yeah I was fearing this might be the culprit.
It doesn't come up much, but I've stumbled across it a few times through
the years. It comes up less often than sharing nodes that aren't
supposed to be shared though.
You know we probably could build a checker for this. Walk the IL (prior
to register allocation) and for every pseudo referenced, see if it
compares equal to regno_reg_rtx[regnum], if not ICE. Probably could be
embedded in one of the existing RTL checking phases with minimal cost.
jeff