On Mon, 27 Jul 2026, [email protected] wrote: > From: Kyrylo Tkachov <[email protected]> > > PR126405 is another wrong-code in the same category as PR123625 and PR121957. > An oversized vector (V16DI, 128 bytes, so no register mode) is spilled, > out-of-SSA leaves two of its partitions sharing one MEM_EXPR, > and the load/store pair-fusion pass, > which identifies a location by a MEM_EXPR base and an offset from it, fuses > two stores that are 144 bytes apart: > > before (set (mem:V4SI [sp+240]) (reg v17)) ; g18_lsm.11+96 > (set (mem:V4SI [sp+384]) (reg v27)) ; g18_lsm.11+112 > > after (set (mem:V2x16QI [sp+240]) > (unspec [(reg v17) (reg v27)] UNSPEC_STP)) > > [sp+384] is then never written. > > split_overlapping_partition_decls already exists to prevent this, from the fix > for PR123625 and PR121957. This series closes the two holes in > split_overlapping_partition_decls and then checks the invariant so that the > next one is an ICE rather than a miscompile. > > Bootstrapped and tested on aarch64-none-linux-gnu and x86_64-pc-linux-gnu.
This is OK for trunk and OK to backport if there's no immediate fallout after a day or so. Thanks, Richard. > Kyrylo Tkachov (3): > out-of-SSA: Use all partition names to find the decl to split > [PR126405] > out-of-SSA: Split partitions of parameters and results too [PR126405] > cfgexpand: Verify that partitions do not share a MEM_EXPR [PR126405] > > gcc/cfgexpand.cc | 38 +++++++++++-- > gcc/cfgexpand.h | 1 + > .../gcc.c-torture/execute/pr126405-2.c | 54 ++++++++++++++++++ > .../gcc.c-torture/execute/pr126405-3.c | 48 ++++++++++++++++ > .../gcc.c-torture/execute/pr126405.c | 56 +++++++++++++++++++ > gcc/testsuite/gcc.dg/pr126405-1.c | 29 ++++++++++ > gcc/testsuite/gcc.dg/pr126405-2.c | 35 ++++++++++++ > gcc/testsuite/gcc.dg/pr126405-3.c | 26 +++++++++ > gcc/tree-outof-ssa.cc | 36 ++++++++++-- > 9 files changed, 314 insertions(+), 9 deletions(-) > create mode 100644 gcc/testsuite/gcc.c-torture/execute/pr126405-2.c > create mode 100644 gcc/testsuite/gcc.c-torture/execute/pr126405-3.c > create mode 100644 gcc/testsuite/gcc.c-torture/execute/pr126405.c > create mode 100644 gcc/testsuite/gcc.dg/pr126405-1.c > create mode 100644 gcc/testsuite/gcc.dg/pr126405-2.c > create mode 100644 gcc/testsuite/gcc.dg/pr126405-3.c > > -- Richard Biener <[email protected]> SUSE Software Solutions Germany GmbH, Frankenstrasse 146, 90461 Nuernberg, Germany; GF: Jochen Jaser, Andrew McDonald, Abhinav Puri; (HRB 36809, AG Nuernberg)
