This patch relaxes the subreg invariant that you can only change modes
or make it paradoxical in one conversion. i.e. it now allows subreg:V2DI (reg:DF ..))
This is well defined in the generic sense and allowing it would enable
you to write RTL without the extra moves which can be interfered with by
combine.
Patch has been pre-approved[1], but giving people chance to object
[1] https://gcc.gnu.org/pipermail/gcc-patches/2023-September/629119.html
gcc/ChangeLog:
* emit-rtl.cc (validate_subreg): Relax subreg rule.
in post-reload splitters that make arbitrarily mode changes to the
registers themselves. */
else if (VECTOR_MODE_P (omode)
- && GET_MODE_INNER (omode) == GET_MODE_INNER (imode))
+ && GET_MODE_UNIT_SIZE (omode) == GET_MODE_UNIT_SIZE (imode))
;
/* Subregs involving floating point modes are not allowed to
change size unless it's an insert into a complex mode.