> -----Original Message----- > From: Srinath Parvathaneni <srinath.parvathan...@arm.com> > Sent: 18 June 2021 16:22 > To: gcc-patches@gcc.gnu.org > Cc: Kyrylo Tkachov <kyrylo.tkac...@arm.com>; Richard Earnshaw > <richard.earns...@arm.com> > Subject: [PATCH][GCC-11] arm: Fix multilib mapping for CDE extensions > [PR100856]. > > Hi, > > This is a backport to gcc-11 and the patch applied cleanly on the branch. > > On passing +cdecp[0-7] extension to the -march string in command line > options, > multilib linking is failing as mentioned in PR100856. This patch fixes this > issue > by > generating a separate canonical string by removing compiler options which > are not > required for multilib linking from march string and assign the new string to > mlibarch > option. This mlibarch string is used for multilib comparison. > > Ok for gcc-11 branch? Ok. Thanks, Kyrill > > Regards, > Srinath. > > gcc/ChangeLog: > > 2021-06-10 Srinath Parvathaneni <srinath.parvathan...@arm.com> > > PR target/100856 > * common/config/arm/arm-common.c (arm_canon_arch_option_1): > New function > derived from arm_canon_arch. > (arm_canon_arch_option): Call it. > (arm_canon_arch_multilib_option): New function. > * config/arm/arm-cpus.in (IGNORE_FOR_MULTILIB): New fgroup. > * config/arm/arm.h (arm_canon_arch_multilib_option): New > prototype. > (CANON_ARCH_MULTILIB_SPEC_FUNCTION): New macro. > (MULTILIB_ARCH_CANONICAL_SPECS): New macro. > (DRIVER_SELF_SPECS): Add MULTILIB_ARCH_CANONICAL_SPECS. > * config/arm/arm.opt (mlibarch): New option. > * config/arm/t-rmprofile (MULTILIB_MATCHES): For armv8*-m, > replace use > of march on RHS with mlibarch. > > gcc/testsuite/ChangeLog: > > 2021-06-10 Srinath Parvathaneni <srinath.parvathan...@arm.com> > > PR target/100856 > * gcc.target/arm/acle/pr100856.c: New test. > * gcc.target/arm/multilib.exp: Add tests for cde options. > > (cherry picked from commit f58d03b5df25f9eab06b7eacea8da780fc2e0219) > > > ############### Attachment also inlined for ease of reply > ############### > > > diff --git a/gcc/common/config/arm/arm-common.c > b/gcc/common/config/arm/arm-common.c > index > 9980af6885c3dfe68f61fa0f39b23022b4e59c19..481aa9e43d9c73e464e1e99 > 2ad7d94c30d2db001 100644 > --- a/gcc/common/config/arm/arm-common.c > +++ b/gcc/common/config/arm/arm-common.c > @@ -627,9 +627,15 @@ public: > The options array consists of couplets of information where the > first item in each couplet is the string describing which option > name was selected (arch, cpu, fpu) and the second is the value > - passed for that option. */ > -const char * > -arm_canon_arch_option (int argc, const char **argv) > + passed for that option. > + > + arch_for_multilib is boolean variable taking value true or false. > + arch_for_multilib is false when the canonical representation is for -march > + option and it is true when canonical representation is for -mlibarch > option. > + On passing arch_for_multilib true the canonical string generated will be > + without the compiler options which are not required for multilib linking. > */ > +static const char * > +arm_canon_arch_option_1 (int argc, const char **argv, bool > arch_for_multilib) > { > const char *arch = NULL; > const char *cpu = NULL; > @@ -694,8 +700,8 @@ arm_canon_arch_option (int argc, const char **argv) > /* First build up a bitmap describing the target architecture. */ > if (arch) > { > - selected_arch = arm_parse_arch_option_name (all_architectures, > - "-march", arch); > + selected_arch = arm_parse_arch_option_name (all_architectures, "- > march", > + arch, !arch_for_multilib); > > if (selected_arch == NULL) > return ""; > @@ -703,6 +709,15 @@ arm_canon_arch_option (int argc, const char > **argv) > arm_initialize_isa (target_isa, selected_arch->common.isa_bits); > arm_parse_option_features (target_isa, &selected_arch->common, > strchr (arch, '+')); > + if (arch_for_multilib) > + { > + const enum isa_feature removable_bits[] = > {ISA_IGNORE_FOR_MULTILIB, > + isa_nobit}; > + sbitmap isa_bits = sbitmap_alloc (isa_num_bits); > + arm_initialize_isa (isa_bits, removable_bits); > + bitmap_and_compl (target_isa, target_isa, isa_bits); > + } > + > if (fpu && strcmp (fpu, "auto") != 0) > { > /* We assume that architectures do not have any FPU bits > @@ -719,7 +734,8 @@ arm_canon_arch_option (int argc, const char **argv) > else if (cpu) > { > const cpu_option *selected_cpu > - = arm_parse_cpu_option_name (all_cores, "-mcpu", cpu); > + = arm_parse_cpu_option_name (all_cores, "-mcpu", cpu, > + !arch_for_multilib); > > if (selected_cpu == NULL) > return ""; > @@ -1069,3 +1085,22 @@ arm_asm_auto_mfpu (int argc, const char > **argv) > #define TARGET_EXCEPT_UNWIND_INFO arm_except_unwind_info > > struct gcc_targetm_common targetm_common = > TARGETM_COMMON_INITIALIZER; > + > +/* Returns a canonical representation of the -march option from the > current > + -march string (if given) and other options on the command line that might > + affect the architecture. */ > +const char * > +arm_canon_arch_option (int argc, const char **argv) > +{ > + return arm_canon_arch_option_1 (argc, argv, false); > +} > + > +/* Returns a canonical representation of the -mlibarch option from the > current > + -march string (if given) and other options on the command line that might > + affect the architecture after removing the compiler extension options > which > + are not required for multilib linking. */ > +const char * > +arm_canon_arch_multilib_option (int argc, const char **argv) > +{ > + return arm_canon_arch_option_1 (argc, argv, true); > +} > diff --git a/gcc/config/arm/arm-cpus.in b/gcc/config/arm/arm-cpus.in > index > 0becb4385b675d0e08ea08c97785cabfa8cf7026..ab4b6acf5ea47b1c788dea8 > f7878141f2a4018cc 100644 > --- a/gcc/config/arm/arm-cpus.in > +++ b/gcc/config/arm/arm-cpus.in > @@ -324,6 +324,8 @@ define implied vfp_base MVE MVE_FP ALL_FP > # need to ignore it for matching purposes. > define fgroup ALL_QUIRKS quirk_no_volatile_ce quirk_armv6kz > quirk_cm3_ldrd xscale quirk_no_asmcpu > > +define fgroup IGNORE_FOR_MULTILIB cdecp0 cdecp1 cdecp2 cdecp3 > cdecp4 cdecp5 cdecp6 cdecp7 > + > # Architecture entries > # format: > # begin arch <name> > diff --git a/gcc/config/arm/arm.h b/gcc/config/arm/arm.h > index > c70af57b5f67915e69457f57f7e27e9845d0c82d..47c13a9e57f28d171d0e0f4 > b2208903d1f36fc89 100644 > --- a/gcc/config/arm/arm.h > +++ b/gcc/config/arm/arm.h > @@ -2448,10 +2448,14 @@ extern const char *host_detect_local_cpu (int > argc, const char **argv); > #endif > > const char *arm_canon_arch_option (int argc, const char **argv); > +const char *arm_canon_arch_multilib_option (int argc, const char **argv); > > #define CANON_ARCH_SPEC_FUNCTION \ > { "canon_arch", arm_canon_arch_option }, > > +#define CANON_ARCH_MULTILIB_SPEC_FUNCTION \ > + { "canon_arch_multilib", arm_canon_arch_multilib_option }, > + > const char *arm_be8_option (int argc, const char **argv); > #define BE8_SPEC_FUNCTION \ > { "be8_linkopt", arm_be8_option }, > @@ -2460,6 +2464,7 @@ const char *arm_be8_option (int argc, const char > **argv); > MCPU_MTUNE_NATIVE_FUNCTIONS \ > ASM_CPU_SPEC_FUNCTIONS \ > CANON_ARCH_SPEC_FUNCTION \ > + CANON_ARCH_MULTILIB_SPEC_FUNCTION \ > TARGET_MODE_SPEC_FUNCTIONS \ > BE8_SPEC_FUNCTION > > @@ -2480,12 +2485,22 @@ const char *arm_be8_option (int argc, const > char **argv); > " %{mfloat-abi=*: abi %*}" \ > " %<march=*) " > > +/* Generate a canonical string to represent the architecture selected > ignoring > + the options not required for multilib linking. */ > +#define MULTILIB_ARCH_CANONICAL_SPECS \ > + "-mlibarch=%:canon_arch_multilib(%{mcpu=*: cpu %*} " \ > + " %{march=*: arch %*} " \ > + " %{mfpu=*: fpu %*} " \ > + " %{mfloat-abi=*: abi %*}" \ > + " %<mlibarch=*) " > + > /* Complete set of specs for the driver. Commas separate the > individual rules so that any option suppression (%<opt...)is > completed before starting subsequent rules. */ > #define DRIVER_SELF_SPECS \ > MCPU_MTUNE_NATIVE_SPECS, \ > TARGET_MODE_SPECS, \ > + MULTILIB_ARCH_CANONICAL_SPECS, \ > ARCH_CANONICAL_SPECS > > #define TARGET_SUPPORTS_WIDE_INT 1 > diff --git a/gcc/config/arm/arm.opt b/gcc/config/arm/arm.opt > index > d332eb67a9efdfcdc9484485ae6293038b626efc..af478a946b2e9c2b51d0272 > df7b5fab5cbb971ef 100644 > --- a/gcc/config/arm/arm.opt > +++ b/gcc/config/arm/arm.opt > @@ -81,6 +81,12 @@ Specify the name of the target architecture. > EnumValue > Enum(arm_arch) String(native) Value(-1) DriverOnly > > +; Set to the name of target architecture which is required for > +; multilib linking. This option is undocumented becuase it > +; should not be used by the users. > +mlibarch= > +Target RejectNegative JoinedOrMissing NoDWARFRecord DriverOnly > Undocumented > + > marm > Target RejectNegative Negative(mthumb) InverseMask(THUMB) > Generate code in 32 bit ARM state. > diff --git a/gcc/config/arm/t-rmprofile b/gcc/config/arm/t-rmprofile > index > 19591892f3caae87c7aa00ce2a7ecd0e072aedc5..3e75fcc9635a19f313aa6be > f00fd99d7190bb2e9 100644 > --- a/gcc/config/arm/t-rmprofile > +++ b/gcc/config/arm/t-rmprofile > @@ -53,10 +53,15 @@ MULTILIB_REQUIRED += mthumb/march=armv8.1- > m.main+mve/mfloat-abi=hard > # Arch Matches > MULTILIB_MATCHES += march?armv6s-m=march?armv6-m > > +# For all MULITIB_MATCHES for v8-m and above add mlibarch? on the right > hand side > +# of = in the variant string instead of march?. This is needed becuase all > the > +# MULITIB_MATCHES variant strings are compared with mlibarch option for > multilib > +# linking. > + > # Map all v8-m.main+dsp FP variants down to the variant without DSP. > -MULTILIB_MATCHES += march?armv8-m.main=march?armv8-m.main+dsp > \ > +MULTILIB_MATCHES += march?armv8-m.main=mlibarch?armv8- > m.main+dsp \ > $(foreach FP, +fp +fp.dp, \ > - march?armv8-m.main$(FP)=march?armv8- > m.main+dsp$(FP)) > + march?armv8-m.main$(FP)=mlibarch?armv8- > m.main+dsp$(FP)) > > # For single-precision only fpv5, use the base fp libraries > MULTILIB_MATCHES += march?armv7e-m+fp=march?armv7e-m+fpv5 > @@ -65,10 +70,9 @@ MULTILIB_MATCHES += march?armv7e- > m+fp=march?armv7e-m+fpv5 > MULTILIB_REUSE += $(foreach ARCH, armv6s-m armv7-m > armv7e-m armv8-m\.base armv8-m\.main, \ > mthumb/march.$(ARCH)/mfloat- > abi.soft=mthumb/march.$(ARCH)/mfloat-abi.softfp) > > - > # Map v8.1-M to v8-M. > -MULTILIB_MATCHES += march?armv8-m.main=march?armv8.1-m.main > -MULTILIB_MATCHES += march?armv8-m.main=march?armv8.1- > m.main+dsp > +MULTILIB_MATCHES += march?armv8-m.main=mlibarch?armv8.1-m.main > +MULTILIB_MATCHES += march?armv8-m.main=mlibarch?armv8.1- > m.main+dsp > MULTILIB_REUSE += mthumb/march.armv8-m\.main/mfloat- > abi.soft=mthumb/march.armv8\.1-m\.main+mve/mfloat-abi.soft > MULTILIB_REUSE += mthumb/march.armv8-m\.main/mfloat- > abi.soft=mthumb/march.armv8\.1-m\.main+mve/mfloat-abi.softfp > > @@ -77,8 +81,15 @@ v8_1m_dp_variants = +fp.dp +dsp+fp.dp +fp.dp+mve > +fp.dp+mve.fp > > # Map all v8.1-m.main FP sp variants down to v8-m. > MULTILIB_MATCHES += $(foreach FP, $(v8_1m_sp_variants), \ > - march?armv8-m.main+fp=march?armv8.1- > m.main$(FP)) > + march?armv8-m.main+fp=mlibarch?armv8.1- > m.main$(FP)) > > # Map all v8.1-m.main FP dp variants down to v8-m. > MULTILIB_MATCHES += $(foreach FP, $(v8_1m_dp_variants), \ > - march?armv8-m.main+fp.dp=march?armv8.1- > m.main$(FP)) > + march?armv8-m.main+fp.dp=mlibarch?armv8.1- > m.main$(FP)) > + > +# For all the MULTILIB_REQUIRED for v8-m and above, add > MULTILIB_MATCHES which > +# maps mlibarch with march for multilib linking. > +MULTILIB_MATCHES += march?armv8-m.main=mlibarch?armv8-m.main > +MULTILIB_MATCHES += march?armv8-m.main+fp=mlibarch?armv8- > m.main+fp > +MULTILIB_MATCHES += march?armv8-m.main+fp.dp=mlibarch?armv8- > m.main+fp.dp > +MULTILIB_MATCHES += march?armv8.1-m.main+mve=mlibarch?armv8.1- > m.main+mve > diff --git a/gcc/testsuite/gcc.target/arm/acle/pr100856.c > b/gcc/testsuite/gcc.target/arm/acle/pr100856.c > new file mode 100644 > index > 0000000000000000000000000000000000000000..5bc030e2e46bf89dfe7f3b > 9d0dab1e07947e8d5e > --- /dev/null > +++ b/gcc/testsuite/gcc.target/arm/acle/pr100856.c > @@ -0,0 +1,10 @@ > +/* { dg-do run } */ > +/* { dg-require-effective-target arm_v8_1m_main_cde_mve_ok } */ > +/* { dg-add-options arm_v8_1m_main_cde_mve } */ > + > +#include "arm_cde.h" > + > +int main() > +{ > + return 0; > +} > diff --git a/gcc/testsuite/gcc.target/arm/multilib.exp > b/gcc/testsuite/gcc.target/arm/multilib.exp > index > 46f2d86de3c05c184b2ec12af53e2053ddc3b157..4b30025db8cbdcd37bbb3a > 0be6c345b9d48818c4 100644 > --- a/gcc/testsuite/gcc.target/arm/multilib.exp > +++ b/gcc/testsuite/gcc.target/arm/multilib.exp > @@ -840,6 +840,119 @@ if {[multilib_config "rmprofile"] } { > {-mcpu=cortex-m55+nomve+nofp -mfpu=auto -mfloat-abi=softfp} > "thumb/v8-m.main/nofp" > {-mcpu=cortex-m55+nodsp+nofp -mfpu=auto -mfloat-abi=soft} > "thumb/v8-m.main/nofp" > {-mcpu=cortex-m55+nodsp+nofp -mfpu=auto -mfloat-abi=softfp} > "thumb/v8-m.main/nofp" > + {-march=armv8-m.main+cdecp0 -mfpu=auto -mfloat-abi=soft} > "thumb/v8-m.main/nofp" > + {-march=armv8-m.main+fp+cdecp0 -mfpu=auto -mfloat-abi=soft} > "thumb/v8-m.main/nofp" > + {-march=armv8-m.main+fp.dp+cdecp0 -mfpu=auto -mfloat-abi=soft} > "thumb/v8-m.main/nofp" > + {-march=armv8-m.main+fp+dsp+cdecp0 -mfpu=auto -mfloat- > abi=soft} "thumb/v8-m.main/nofp" > + {-march=armv8-m.main+fp.dp+dsp+cdecp0 -mfpu=auto -mfloat- > abi=soft} "thumb/v8-m.main/nofp" > + {-march=armv8-m.main+cdecp0 -mfpu=vfpv3xd -mfloat-abi=soft} > "thumb/v8-m.main/nofp" > + {-march=armv8-m.main+fp+cdecp0 -mfpu=vfpv3xd -mfloat-abi=soft} > "thumb/v8-m.main/nofp" > + {-march=armv8-m.main+fp.dp+cdecp0 -mfpu=vfpv3xd -mfloat- > abi=soft} "thumb/v8-m.main/nofp" > + {-march=armv8-m.main+fp+dsp+cdecp0 -mfpu=vfpv3xd -mfloat- > abi=soft} "thumb/v8-m.main/nofp" > + {-march=armv8-m.main+fp.dp+dsp+cdecp0 -mfpu=vfpv3xd -mfloat- > abi=soft} "thumb/v8-m.main/nofp" > + {-march=armv8-m.main+cdecp0 -mfpu=vfpv3xd-fp16 -mfloat- > abi=soft} "thumb/v8-m.main/nofp" > + {-march=armv8-m.main+fp+cdecp0 -mfpu=vfpv3xd-fp16 -mfloat- > abi=soft} "thumb/v8-m.main/nofp" > + {-march=armv8-m.main+fp.dp+cdecp0 -mfpu=vfpv3xd-fp16 -mfloat- > abi=soft} "thumb/v8-m.main/nofp" > + {-march=armv8-m.main+fp+dsp+cdecp0 -mfpu=vfpv3xd-fp16 - > mfloat-abi=soft} "thumb/v8-m.main/nofp" > + {-march=armv8-m.main+fp.dp+dsp+cdecp0 -mfpu=vfpv3xd-fp16 - > mfloat-abi=soft} "thumb/v8-m.main/nofp" > + {-march=armv8-m.main+cdecp0 -mfpu=fpv4-sp-d16 -mfloat-abi=soft} > "thumb/v8-m.main/nofp" > + {-march=armv8-m.main+fp+cdecp0 -mfpu=fpv4-sp-d16 -mfloat- > abi=soft} "thumb/v8-m.main/nofp" > + {-march=armv8-m.main+fp.dp+cdecp0 -mfpu=fpv4-sp-d16 -mfloat- > abi=soft} "thumb/v8-m.main/nofp" > + {-march=armv8-m.main+fp+dsp+cdecp0 -mfpu=fpv4-sp-d16 -mfloat- > abi=soft} "thumb/v8-m.main/nofp" > + {-march=armv8-m.main+fp.dp+dsp+cdecp0 -mfpu=fpv4-sp-d16 - > mfloat-abi=soft} "thumb/v8-m.main/nofp" > + {-march=armv8-m.main+cdecp0 -mfpu=fpv5-sp-d16 -mfloat-abi=soft} > "thumb/v8-m.main/nofp" > + {-march=armv8-m.main+fp+cdecp0 -mfpu=fpv5-sp-d16 -mfloat- > abi=soft} "thumb/v8-m.main/nofp" > + {-march=armv8-m.main+fp.dp+cdecp0 -mfpu=fpv5-sp-d16 -mfloat- > abi=soft} "thumb/v8-m.main/nofp" > + {-march=armv8-m.main+fp+dsp+cdecp0 -mfpu=fpv5-sp-d16 -mfloat- > abi=soft} "thumb/v8-m.main/nofp" > + {-march=armv8-m.main+fp.dp+dsp+cdecp0 -mfpu=fpv5-sp-d16 - > mfloat-abi=soft} "thumb/v8-m.main/nofp" > + {-march=armv8-m.main+cdecp0 -mfpu=fpv5-d16 -mfloat-abi=soft} > "thumb/v8-m.main/nofp" > + {-march=armv8-m.main+fp+cdecp0 -mfpu=fpv5-d16 -mfloat- > abi=soft} "thumb/v8-m.main/nofp" > + {-march=armv8-m.main+fp.dp+cdecp0 -mfpu=fpv5-d16 -mfloat- > abi=soft} "thumb/v8-m.main/nofp" > + {-march=armv8-m.main+fp+dsp+cdecp0 -mfpu=fpv5-d16 -mfloat- > abi=soft} "thumb/v8-m.main/nofp" > + {-march=armv8-m.main+fp.dp+dsp+cdecp0 -mfpu=fpv5-d16 -mfloat- > abi=soft} "thumb/v8-m.main/nofp" > + {-march=armv8-m.main+fp+cdecp0 -mfpu=auto -mfloat-abi=hard} > "thumb/v8-m.main+fp/hard" > + {-march=armv8-m.main+fp.dp+cdecp0 -mfpu=auto -mfloat-abi=hard} > "thumb/v8-m.main+dp/hard" > + {-march=armv8-m.main+fp+dsp+cdecp0 -mfpu=auto -mfloat- > abi=hard} "thumb/v8-m.main+fp/hard" > + {-march=armv8-m.main+fp.dp+dsp+cdecp0 -mfpu=auto -mfloat- > abi=hard} "thumb/v8-m.main+dp/hard" > + {-march=armv8-m.main+cdecp0 -mfpu=vfpv3xd -mfloat-abi=hard} > "thumb/v8-m.main+fp/hard" > + {-march=armv8-m.main+fp+cdecp0 -mfpu=vfpv3xd -mfloat-abi=hard} > "thumb/v8-m.main+fp/hard" > + {-march=armv8-m.main+fp.dp+cdecp0 -mfpu=vfpv3xd -mfloat- > abi=hard} "thumb/v8-m.main+dp/hard" > + {-march=armv8-m.main+fp+dsp+cdecp0 -mfpu=vfpv3xd -mfloat- > abi=hard} "thumb/v8-m.main+fp/hard" > + {-march=armv8-m.main+fp.dp+dsp+cdecp0 -mfpu=vfpv3xd -mfloat- > abi=hard} "thumb/v8-m.main+dp/hard" > + {-march=armv8-m.main+cdecp0 -mfpu=vfpv3xd-fp16 -mfloat- > abi=hard} "thumb/v8-m.main+fp/hard" > + {-march=armv8-m.main+fp+cdecp0 -mfpu=vfpv3xd-fp16 -mfloat- > abi=hard} "thumb/v8-m.main+fp/hard" > + {-march=armv8-m.main+fp.dp+cdecp0 -mfpu=vfpv3xd-fp16 -mfloat- > abi=hard} "thumb/v8-m.main+dp/hard" > + {-march=armv8-m.main+fp+dsp+cdecp0 -mfpu=vfpv3xd-fp16 - > mfloat-abi=hard} "thumb/v8-m.main+fp/hard" > + {-march=armv8-m.main+fp.dp+dsp+cdecp0 -mfpu=vfpv3xd-fp16 - > mfloat-abi=hard} "thumb/v8-m.main+dp/hard" > + {-march=armv8-m.main+cdecp0 -mfpu=fpv4-sp-d16 -mfloat- > abi=hard} "thumb/v8-m.main+fp/hard" > + {-march=armv8-m.main+fp+cdecp0 -mfpu=fpv4-sp-d16 -mfloat- > abi=hard} "thumb/v8-m.main+fp/hard" > + {-march=armv8-m.main+fp.dp+cdecp0 -mfpu=fpv4-sp-d16 -mfloat- > abi=hard} "thumb/v8-m.main+dp/hard" > + {-march=armv8-m.main+fp+dsp+cdecp0 -mfpu=fpv4-sp-d16 -mfloat- > abi=hard} "thumb/v8-m.main+fp/hard" > + {-march=armv8-m.main+fp.dp+dsp+cdecp0 -mfpu=fpv4-sp-d16 - > mfloat-abi=hard} "thumb/v8-m.main+dp/hard" > + {-march=armv8-m.main+cdecp0 -mfpu=fpv5-sp-d16 -mfloat- > abi=hard} "thumb/v8-m.main+fp/hard" > + {-march=armv8-m.main+fp+cdecp0 -mfpu=fpv5-sp-d16 -mfloat- > abi=hard} "thumb/v8-m.main+fp/hard" > + {-march=armv8-m.main+fp.dp+cdecp0 -mfpu=fpv5-sp-d16 -mfloat- > abi=hard} "thumb/v8-m.main+dp/hard" > + {-march=armv8-m.main+fp+dsp+cdecp0 -mfpu=fpv5-sp-d16 -mfloat- > abi=hard} "thumb/v8-m.main+fp/hard" > + {-march=armv8-m.main+fp.dp+dsp+cdecp0 -mfpu=fpv5-sp-d16 - > mfloat-abi=hard} "thumb/v8-m.main+dp/hard" > + {-march=armv8-m.main+cdecp0 -mfpu=fpv5-d16 -mfloat-abi=hard} > "thumb/v8-m.main+dp/hard" > + {-march=armv8-m.main+fp+cdecp0 -mfpu=fpv5-d16 -mfloat- > abi=hard} "thumb/v8-m.main+dp/hard" > + {-march=armv8-m.main+fp.dp+cdecp0 -mfpu=fpv5-d16 -mfloat- > abi=hard} "thumb/v8-m.main+dp/hard" > + {-march=armv8-m.main+fp+dsp+cdecp0 -mfpu=fpv5-d16 -mfloat- > abi=hard} "thumb/v8-m.main+dp/hard" > + {-march=armv8-m.main+fp.dp+dsp+cdecp0 -mfpu=fpv5-d16 -mfloat- > abi=hard} "thumb/v8-m.main+dp/hard" > + {-march=armv8-m.main+cdecp0 -mfpu=auto -mfloat-abi=softfp} > "thumb/v8-m.main/nofp" > + {-march=armv8-m.main+fp+cdecp0 -mfpu=auto -mfloat-abi=softfp} > "thumb/v8-m.main+fp/softfp" > + {-march=armv8-m.main+fp.dp+cdecp0 -mfpu=auto -mfloat- > abi=softfp} "thumb/v8-m.main+dp/softfp" > + {-march=armv8-m.main+fp+dsp+cdecp0 -mfpu=auto -mfloat- > abi=softfp} "thumb/v8-m.main+fp/softfp" > + {-march=armv8-m.main+fp.dp+dsp+cdecp0 -mfpu=auto -mfloat- > abi=softfp} "thumb/v8-m.main+dp/softfp" > + {-march=armv8-m.main+cdecp0 -mfpu=vfpv3xd -mfloat-abi=softfp} > "thumb/v8-m.main+fp/softfp" > + {-march=armv8-m.main+fp+cdecp0 -mfpu=vfpv3xd -mfloat- > abi=softfp} "thumb/v8-m.main+fp/softfp" > + {-march=armv8-m.main+fp.dp+cdecp0 -mfpu=vfpv3xd -mfloat- > abi=softfp} "thumb/v8-m.main+dp/softfp" > + {-march=armv8-m.main+fp+dsp+cdecp0 -mfpu=vfpv3xd -mfloat- > abi=softfp} "thumb/v8-m.main+fp/softfp" > + {-march=armv8-m.main+fp.dp+dsp+cdecp0 -mfpu=vfpv3xd -mfloat- > abi=softfp} "thumb/v8-m.main+dp/softfp" > + {-march=armv8-m.main+cdecp0 -mfpu=vfpv3xd-fp16 -mfloat- > abi=softfp} "thumb/v8-m.main+fp/softfp" > + {-march=armv8-m.main+fp+cdecp0 -mfpu=vfpv3xd-fp16 -mfloat- > abi=softfp} "thumb/v8-m.main+fp/softfp" > + {-march=armv8-m.main+fp.dp+cdecp0 -mfpu=vfpv3xd-fp16 -mfloat- > abi=softfp} "thumb/v8-m.main+dp/softfp" > + {-march=armv8-m.main+fp+dsp+cdecp0 -mfpu=vfpv3xd-fp16 - > mfloat-abi=softfp} "thumb/v8-m.main+fp/softfp" > + {-march=armv8-m.main+fp.dp+dsp+cdecp0 -mfpu=vfpv3xd-fp16 - > mfloat-abi=softfp} "thumb/v8-m.main+dp/softfp" > + {-march=armv8-m.main+cdecp0 -mfpu=fpv4-sp-d16 -mfloat- > abi=softfp} "thumb/v8-m.main+fp/softfp" > + {-march=armv8-m.main+fp+cdecp0 -mfpu=fpv4-sp-d16 -mfloat- > abi=softfp} "thumb/v8-m.main+fp/softfp" > + {-march=armv8-m.main+fp.dp+cdecp0 -mfpu=fpv4-sp-d16 -mfloat- > abi=softfp} "thumb/v8-m.main+dp/softfp" > + {-march=armv8-m.main+fp+dsp+cdecp0 -mfpu=fpv4-sp-d16 -mfloat- > abi=softfp} "thumb/v8-m.main+fp/softfp" > + {-march=armv8-m.main+fp.dp+dsp+cdecp0 -mfpu=fpv4-sp-d16 - > mfloat-abi=softfp} "thumb/v8-m.main+dp/softfp" > + {-march=armv8-m.main+cdecp0 -mfpu=fpv5-sp-d16 -mfloat- > abi=softfp} "thumb/v8-m.main+fp/softfp" > + {-march=armv8-m.main+fp+cdecp0 -mfpu=fpv5-sp-d16 -mfloat- > abi=softfp} "thumb/v8-m.main+fp/softfp" > + {-march=armv8-m.main+fp.dp+cdecp0 -mfpu=fpv5-sp-d16 -mfloat- > abi=softfp} "thumb/v8-m.main+dp/softfp" > + {-march=armv8-m.main+fp+dsp+cdecp0 -mfpu=fpv5-sp-d16 -mfloat- > abi=softfp} "thumb/v8-m.main+fp/softfp" > + {-march=armv8-m.main+fp.dp+dsp+cdecp0 -mfpu=fpv5-sp-d16 - > mfloat-abi=softfp} "thumb/v8-m.main+dp/softfp" > + {-march=armv8-m.main+cdecp0 -mfpu=fpv5-d16 -mfloat-abi=softfp} > "thumb/v8-m.main+dp/softfp" > + {-march=armv8-m.main+fp+cdecp0 -mfpu=fpv5-d16 -mfloat- > abi=softfp} "thumb/v8-m.main+dp/softfp" > + {-march=armv8-m.main+fp.dp+cdecp0 -mfpu=fpv5-d16 -mfloat- > abi=softfp} "thumb/v8-m.main+dp/softfp" > + {-march=armv8-m.main+fp+dsp+cdecp0 -mfpu=fpv5-d16 -mfloat- > abi=softfp} "thumb/v8-m.main+dp/softfp" > + {-march=armv8-m.main+fp.dp+dsp+cdecp0 -mfpu=fpv5-d16 -mfloat- > abi=softfp} "thumb/v8-m.main+dp/softfp" > + {-march=armv8.1-m.main+cdecp0 -mfpu=auto -mfloat-abi=soft} > "thumb/v8-m.main/nofp" > + {-march=armv8.1-m.main+dsp+cdecp0 -mfpu=auto -mfloat-abi=soft} > "thumb/v8-m.main/nofp" > + {-march=armv8.1-m.main+dsp+fp+cdecp0 -mfpu=auto -mfloat- > abi=soft} "thumb/v8-m.main/nofp" > + {-march=armv8.1-m.main+dsp+fp.dp+cdecp0 -mfpu=auto -mfloat- > abi=soft} "thumb/v8-m.main/nofp" > + {-march=armv8.1-m.main+cdecp0 -mfpu=auto -mfloat-abi=softfp} > "thumb/v8-m.main/nofp" > + {-march=armv8.1-m.main+dsp+cdecp0 -mfpu=auto -mfloat- > abi=softfp} "thumb/v8-m.main/nofp" > + {-march=armv8.1-m.main+dsp+fp+cdecp0 -mfpu=auto -mfloat- > abi=softfp} "thumb/v8-m.main+fp/softfp" > + {-march=armv8.1-m.main+dsp+fp.dp+cdecp0 -mfpu=auto -mfloat- > abi=softfp} "thumb/v8-m.main+dp/softfp" > + {-march=armv8.1-m.main+dsp+fp+cdecp0 -mfpu=auto -mfloat- > abi=hard} "thumb/v8-m.main+fp/hard" > + {-march=armv8.1-m.main+dsp+fp.dp+cdecp0 -mfpu=auto -mfloat- > abi=hard} "thumb/v8-m.main+dp/hard" > + {-march=armv8.1-m.main+mve+cdecp0 -mfpu=auto -mfloat-abi=soft} > "thumb/v8-m.main/nofp" > + {-march=armv8.1-m.main+mve.fp+cdecp0 -mfpu=auto -mfloat- > abi=soft} "thumb/v8-m.main/nofp" > + {-march=armv8.1-m.main+mve+cdecp0 -mfpu=auto -mfloat- > abi=softfp} "thumb/v8-m.main/nofp" > + {-march=armv8.1-m.main+mve.fp+cdecp0 -mfpu=auto -mfloat- > abi=softfp} "thumb/v8-m.main+fp/softfp" > + {-march=armv8.1-m.main+mve+cdecp0 -mfpu=auto -mfloat- > abi=hard} "thumb/v8.1-m.main+mve/hard" > + {-march=armv8.1-m.main+mve+fp+cdecp0 -mfpu=auto -mfloat- > abi=hard} "thumb/v8-m.main+fp/hard" > + {-march=armv8.1-m.main+mve+fp+cdecp0 -mfpu=auto -mfloat- > abi=softfp} "thumb/v8-m.main+fp/softfp" > + {-march=armv8.1-m.main+mve.fp+cdecp0 -mfpu=auto -mfloat- > abi=hard} "thumb/v8-m.main+fp/hard" > + {-march=armv8.1-m.main+mve+fp.dp+cdecp0 -mfpu=auto -mfloat- > abi=soft} "thumb/v8-m.main/nofp" > + {-march=armv8.1-m.main+mve.fp+fp.dp+cdecp0 -mfpu=auto - > mfloat-abi=soft} "thumb/v8-m.main/nofp" > + {-march=armv8.1-m.main+mve+fp.dp+cdecp0 -mfpu=auto -mfloat- > abi=softfp} "thumb/v8-m.main+dp/softfp" > + {-march=armv8.1-m.main+mve.fp+fp.dp+cdecp0 -mfpu=auto - > mfloat-abi=softfp} "thumb/v8-m.main+dp/softfp" > + {-march=armv8.1-m.main+mve+fp.dp+cdecp0 -mfpu=auto -mfloat- > abi=hard} "thumb/v8-m.main+dp/hard" > + {-march=armv8.1-m.main+mve.fp+fp.dp+cdecp0 -mfpu=auto - > mfloat-abi=hard} "thumb/v8-m.main+dp/hard" > } { > check_multi_dir $opts $dir > }
RE: [PATCH][GCC-11] arm: Fix multilib mapping for CDE extensions [PR100856].
Kyrylo Tkachov via Gcc-patches Fri, 18 Jun 2021 08:34:39 -0700
- [PATCH][GCC-11] arm: Fix multilib map... Srinath Parvathaneni via Gcc-patches
- RE: [PATCH][GCC-11] arm: Fix mul... Kyrylo Tkachov via Gcc-patches