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

Reply via email to