Preventing decomposition if modes are not tieable is necessary to
stop AArch64 partial Neon structure modes being treated as packed in
registers.
This is a necessary prerequisite for a future AArch64 PCS change to
maintain good code generation.
gcc/ChangeLog:
2021-10-14 Jonathan Wright <jonathan.wright@arm.com>
* lower-subreg.c (simple_move): Prevent decomposition if
modes are not tieable.
non-integer mode for which there is no integer mode of the same
size. */
mode = GET_MODE (SET_DEST (set));
+ scalar_int_mode int_mode;
if (!SCALAR_INT_MODE_P (mode)
- && !int_mode_for_size (GET_MODE_BITSIZE (mode), 0).exists ())
+ && (!int_mode_for_size (GET_MODE_BITSIZE (mode), 0).exists (&int_mode)
+ || !targetm.modes_tieable_p (mode, int_mode)))
return NULL_RTX;
/* Reject PARTIAL_INT modes. They are used for processor specific