diff mbox series

[arm,backport] arm: Fix rmprofile multilibs when architecture includes +mp or +sec (PR target/93188)

Message ID AM6PR08MB45812076FCFE6A8A60982F0FE4380@AM6PR08MB4581.eurprd08.prod.outlook.com
State New
Headers show
Series [arm,backport] arm: Fix rmprofile multilibs when architecture includes +mp or +sec (PR target/93188) | expand

Commit Message

Przemyslaw Wirkus Jan. 10, 2020, 2:31 p.m. UTC
Hi,
When only the rmprofile multilibs are built, compiling for armv7-a
should select the generic v7 multilibs.  This used to work before +sec
and +mp were added to the architecture options but it was broken by
that update.  This patch fixes those variants and adds some tests to
ensure that they remain fixed ;-)

gcc/ChangeLog:
2020-01-08  Przemyslaw Wirkus  <przemyslaw.wirkus@arm.com>

	Backport from trunk
	PR target/93188
	* config/arm/t-multilib (MULTILIB_MATCHES): Add rules to match
	armv7-a{+mp,+sec,+mp+sec} to appropriate armv7 multilib variants
	when only building rm-profile multilibs.

gcc/testsuite/ChangeLog:
2020-01-08  Przemyslaw Wirkus  <przemyslaw.wirkus@arm.com>

	Backport from trunk
	* gcc.target/arm/multilib.exp: Add new tests for rm-profile only.

Ok for gcc-9-branch?

kind regards
Przemyslaw Wirkus

Comments

Richard Earnshaw (lists) Jan. 10, 2020, 4:50 p.m. UTC | #1
On 10/01/2020 14:31, Przemyslaw Wirkus wrote:
> Hi,
> When only the rmprofile multilibs are built, compiling for armv7-a
> should select the generic v7 multilibs.  This used to work before +sec
> and +mp were added to the architecture options but it was broken by
> that update.  This patch fixes those variants and adds some tests to
> ensure that they remain fixed ;-)
> 
> gcc/ChangeLog:
> 2020-01-08  Przemyslaw Wirkus  <przemyslaw.wirkus@arm.com>
> 
> 	Backport from trunk
> 	PR target/93188
> 	* config/arm/t-multilib (MULTILIB_MATCHES): Add rules to match
> 	armv7-a{+mp,+sec,+mp+sec} to appropriate armv7 multilib variants
> 	when only building rm-profile multilibs.
> 
> gcc/testsuite/ChangeLog:
> 2020-01-08  Przemyslaw Wirkus  <przemyslaw.wirkus@arm.com>
> 
> 	Backport from trunk
> 	* gcc.target/arm/multilib.exp: Add new tests for rm-profile only.
> 
> Ok for gcc-9-branch?
> 
> kind regards
> Przemyslaw Wirkus
> 

Pushed.
diff mbox series

Patch

diff --git a/gcc/config/arm/t-multilib b/gcc/config/arm/t-multilib
index dc97c8f09fb0b7f53520432e1a174adfce1bf6af..182df6e94133d01500de24f511b61beb80152a0e 100644
--- a/gcc/config/arm/t-multilib
+++ b/gcc/config/arm/t-multilib
@@ -132,10 +132,19 @@  MULTILIB_MATCHES	+= march?armv7-r+fp.sp=march?armv8-r+crc+fp.sp
 
 ifeq (,$(HAS_APROFILE))
 # Map all v7-a
+
 MULTILIB_MATCHES	+= march?armv7=march?armv7-a
+
+MULTILIB_MATCHES	+= $(foreach ARCH, $(v7_a_arch_variants), \
+			     march?armv7=march?armv7-a$(ARCH))
+
 MULTILIB_MATCHES	+= $(foreach ARCH, $(v7_a_nosimd_variants) $(v7_a_simd_variants), \
 			     march?armv7+fp=march?armv7-a$(ARCH))
 
+MULTILIB_MATCHES	+= $(foreach ARCHVAR, $(v7_a_arch_variants), \
+			     $(foreach ARCH, $(v7_a_nosimd_variants) $(v7_a_simd_variants), \
+			       march?armv7+fp=march?armv7-a$(ARCHVAR)$(ARCH)))
+
 MULTILIB_MATCHES	+= march?armv7=march?armv7ve
 
 # ARMv7ve FP/SIMD variants: map down to v7+fp
diff --git a/gcc/testsuite/gcc.target/arm/multilib.exp b/gcc/testsuite/gcc.target/arm/multilib.exp
index dcea829965eb15e372401e6389df5a1403393ecb..2df3f9c3117432299ad6ce8746babd5ff4abe405 100644
--- a/gcc/testsuite/gcc.target/arm/multilib.exp
+++ b/gcc/testsuite/gcc.target/arm/multilib.exp
@@ -434,6 +434,22 @@  if {[multilib_config "aprofile"] } {
 	check_multi_dir $opts $dir
     }
 }
+if {[multilib_config "rmprofile"] && ![multilib_config "aprofile"]} {
+    foreach {opts dir} {
+	{-mcpu=cortex-a9 -mfpu=auto -mfloat-abi=soft} "thumb/v7/nofp"
+	{-mcpu=cortex-a8 -mfpu=auto -mfloat-abi=softfp} "thumb/v7+fp/softfp"
+	{-mcpu=cortex-a5 -mfpu=auto -mfloat-abi=hard} "thumb/v7+fp/hard"
+	{-mcpu=cortex-a53 -mfpu=auto -mfloat-abi=hard} "thumb/v7+fp/hard"
+	{-march=armv7-a+fp -mfpu=auto -mfloat-abi=softfp} "thumb/v7+fp/softfp"
+	{-march=armv7-a+fp -mfpu=auto -mfloat-abi=soft} "thumb/v7/nofp"
+	{-march=armv7-a+mp+simd -mfpu=auto -mfloat-abi=softfp} "thumb/v7+fp/softfp"
+	{-march=armv7-a -mfpu=vfpv4 -mfloat-abi=hard} "thumb/v7+fp/hard"
+	{-march=armv7-a+fp -mfpu=auto -mfloat-abi=hard} "thumb/v7+fp/hard"
+	{-march=armv7-a -mfpu=vfpv4 -mfloat-abi=soft} "thumb/v7/nofp"
+    } {
+	check_multi_dir $opts $dir
+    }
+}
 if {[multilib_config "rmprofile"] } {
     foreach {opts dir} {
 	{-mcpu=cortex-m0 -mfpu=auto -mfloat-abi=soft} "thumb/v6-m/nofp"