On 06/11/2025 09:31, Andre Vieira wrote:
Skip partial register clearing logic when dealing with FP_REGS in aggregates as
these are always fully cleared and the logic assumes a mask for each of the 4
argument GPR_REGS.
gcc/ChangeLog:
PR target/122539
* config/arm/arm.cc (comp_not_to_clear_mask_str_un): Skip partial
register clearing logic for FP_REGS.
(compute_not_to_clear_mask): Likewise.
gcc/testsuite/ChangeLog:
* gcc.target/arm/cmse/mainline/8m/hard/union-fp.c: New.
* gcc.target/arm/cmse/baseline/union-4.c: New.
* gcc.target/arm/cmse/mainline/8m/hard/union-4.c: New.
* gcc.target/arm/cmse/mainline/8m/soft/union-4.c: New.
* gcc.target/arm/cmse/mainline/8m/softfp/union-4.c: New.
* gcc.target/arm/cmse/union-4.x: New.
---
gcc/config/arm/arm.cc | 60 ++++++++++-------
.../gcc.target/arm/cmse/baseline/union-4.c | 20 ++++++
.../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/testsuite/gcc.target/arm/cmse/union-4.x | 41 ++++++++++++
7 files changed, 229 insertions(+), 22 deletions(-)
create mode 100644 gcc/testsuite/gcc.target/arm/cmse/baseline/union-4.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/union-4.x
OK
R.