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.

Reply via email to