https://gcc.gnu.org/bugzilla/show_bug.cgi?id=106585
--- Comment #15 from Jeffrey A. Law <law at gcc dot gnu.org> --- So here's a potential path forward for this BZ. 1. We need to improvce how we find split points. In particular RISC-V would prefer to split at the SIGN_EXTEND rather at the inner arithmetic or shifts. This would be a general improvement, I've seen multiple cases where better split points would help. 2. We need to extend ext-dce to convert a SIGN_EXTEND wrapping arithmetic or logicals to a SUBREG. Essentially giving us a way to say we only care the low bits in an arithmetic/logical operation. 3. #2 implies that we'll need SUBREG variants of the "w" form operations. 4. We need bset and likely other patterns to generalize to GPR rather than X for operand modes. 5. We'll need a bclr variant that handles an embedded SUBREG. The combination of all of those get us to the desired code generation.
