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.wir...@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.wir...@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
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"