This series expands on the fix for PR115464 by using force_subreg in more places. It also adds some convenience wrappers for lowpart and highpart subregs.
A part of this will need to be backported after a grace period, but I'll post the cherry-picked parts separately. Tested on aarch64-linux-gnu & x86_64-linux-gnu. OK to install? Richard Sandiford (8): Make force_subreg emit nothing on failure aarch64: Use force_subreg in more places Make more use of force_subreg Add force_lowpart_subreg aarch64: Add some uses of force_lowpart_subreg Make more use of force_lowpart_subreg Add force_highpart_subreg aarch64: Add some uses of force_highpart_subreg gcc/builtins.cc | 22 +++------- gcc/config/aarch64/aarch64-builtins.cc | 15 +++---- gcc/config/aarch64/aarch64-simd.md | 4 +- .../aarch64/aarch64-sve-builtins-base.cc | 10 ++--- .../aarch64/aarch64-sve-builtins-functions.h | 6 +-- .../aarch64/aarch64-sve-builtins-sme.cc | 2 +- gcc/config/aarch64/aarch64.cc | 31 ++++--------- gcc/explow.cc | 34 +++++++++++++- gcc/explow.h | 2 + gcc/expmed.cc | 26 ++++------- gcc/expr.cc | 44 +++++++++---------- gcc/optabs.cc | 26 ++--------- .../aarch64/sve/acle/general/pr115464_2.c | 11 +++++ 13 files changed, 111 insertions(+), 122 deletions(-) create mode 100644 gcc/testsuite/gcc.target/aarch64/sve/acle/general/pr115464_2.c -- 2.25.1