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. juzhe.zh...@rivai.ai From: Robin Dapp Date: 2023-11-13 17:34 To: juzhe.zh...@rivai.ai; 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, juzhe.zh...@rivai.ai 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