aboutsummaryrefslogtreecommitdiff
path: root/gcc
diff options
context:
space:
mode:
authorTamar Christina <tamar.christina@arm.com>2023-10-02 11:50:24 +0100
committerTamar Christina <tamar.christina@arm.com>2023-10-02 11:50:24 +0100
commita35ab1c1a3d04c28519a062fedfebda818b927a4 (patch)
tree0b35bc21b91914ecc96356907eff4fe6d0d8f6dc /gcc
parent19610580d49f3d2d8d511fba55b39efa0764dfc2 (diff)
downloadgcc-a35ab1c1a3d04c28519a062fedfebda818b927a4.zip
gcc-a35ab1c1a3d04c28519a062fedfebda818b927a4.tar.gz
gcc-a35ab1c1a3d04c28519a062fedfebda818b927a4.tar.bz2
rtl: relax validate_subreg to allow paradoxical subregs that change mode
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.
Diffstat (limited to 'gcc')
-rw-r--r--gcc/emit-rtl.cc2
1 files changed, 1 insertions, 1 deletions
diff --git a/gcc/emit-rtl.cc b/gcc/emit-rtl.cc
index 8bd623d..84b6833 100644
--- a/gcc/emit-rtl.cc
+++ b/gcc/emit-rtl.cc
@@ -947,7 +947,7 @@ validate_subreg (machine_mode omode, machine_mode imode,
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.