This series fixes the issue reported in PR 122539 by making sure we don't clear registers in aggregates that have no padding. This applies to FP_REGs too, as these are never padded.
The second patch in the series deals with an out-of-boudns access issue when dealing with FP_REGs that was discovered when testing the clearing of FP_REGs in unions. Andre Vieira (2): arm: Fix CMSE clearing of union members with no padding [PR122539] arm: Fix out of bounds when using cmse with FP types in aggregates [PR122539] Regression tested on arm-none-eabi. OK for trunk and backport to any open branches? gcc/config/arm/arm.cc | 63 +++++++++++------- .../gcc.target/arm/cmse/baseline/union-3.c | 29 ++++++++ .../gcc.target/arm/cmse/baseline/union-4.c | 20 ++++++ .../arm/cmse/mainline/8_1m/union-3.c | 32 +++++++++ .../arm/cmse/mainline/8m/hard/union-4.c | 27 ++++++++ .../arm/cmse/mainline/8m/hard/union-fp.c | 66 +++++++++++++++++++ .../arm/cmse/mainline/8m/soft/union-4.c | 18 +++++ .../arm/cmse/mainline/8m/softfp/union-4.c | 19 ++++++ .../gcc.target/arm/cmse/mainline/8m/union-3.c | 33 ++++++++++ gcc/testsuite/gcc.target/arm/cmse/union-3.x | 23 +++++++ gcc/testsuite/gcc.target/arm/cmse/union-4.x | 41 ++++++++++++ 11 files changed, 349 insertions(+), 22 deletions(-) create mode 100644 gcc/testsuite/gcc.target/arm/cmse/baseline/union-3.c create mode 100644 gcc/testsuite/gcc.target/arm/cmse/baseline/union-4.c create mode 100644 gcc/testsuite/gcc.target/arm/cmse/mainline/8_1m/union-3.c create mode 100644 gcc/testsuite/gcc.target/arm/cmse/mainline/8m/hard/union-4.c create mode 100644 gcc/testsuite/gcc.target/arm/cmse/mainline/8m/hard/union-fp.c create mode 100644 gcc/testsuite/gcc.target/arm/cmse/mainline/8m/soft/union-4.c create mode 100644 gcc/testsuite/gcc.target/arm/cmse/mainline/8m/softfp/union-4.c create mode 100644 gcc/testsuite/gcc.target/arm/cmse/mainline/8m/union-3.c create mode 100644 gcc/testsuite/gcc.target/arm/cmse/union-3.x create mode 100644 gcc/testsuite/gcc.target/arm/cmse/union-4.x -- 2.34.1
