For @code{REG_EQUIV}, the register is equivalent to @var{op} throughout
the entire function, and could validly be replaced in all its
occurrences by @var{op}. (``Validly'' here refers to the data flow of
the program; simple replacement may make some insns invalid.) For
example, when a constant is loaded into a register that is never
assigned any other value, this kind of note is used.
I think REG_QEUIV is what I want. So I think you can test it to see if there is
regression on current tests.
[email protected]
From: Robin Dapp
Date: 2023-11-13 17:34
To: [email protected]; gcc-patches; palmer; kito.cheng; jeffreyalaw
CC: rdapp.gcc
Subject: Re: [PATCH] RISC-V: vsetvl: Refine REG_EQUAL equality.
On 11/13/23 10:30, [email protected] wrote:
> I just checked definition of REG_EQUAL and REG_EQUIV.
>
> As you said, REG_EQUIV is more reasonable. Agree with use rtx_equal_p on
> REG_EQUIV and skip REG_EQUAL.
> Could you check whether it does fix your issues ?
Yes it would fix the issues. I just figured we could work
a bit harder and also catch cases where two "different"
REG_EQUALS would still be the same. But I'm not sure whether
such cases exist at all (leaning towards no...).
Going to post v2 after the tests ran.
Regards
Robin