arm: Fix out of bounds when using cmse with FP types in aggregates [PR122539]

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.

(cherry picked from commit 13b58ca5d1a56517932f80ce07bd947d7f4f917e)
7 files changed