> Yep, if I drop the non-canonicial strings via > > diff --git a/gcc/config/riscv/multilib-generator > b/gcc/config/riscv/multilib-generator > index 58b7198b243..a63a4d69c18 100755 > --- a/gcc/config/riscv/multilib-generator > +++ b/gcc/config/riscv/multilib-generator > @@ -174,7 +174,7 @@ for cmodel in cmodels: > ext_combs = expand_combination(ext) > alts = sum([[x] + [x + y for y in ext_combs] for x in [arch] + > extra], []) > alts = filter(lambda x: len(x) != 0, alts) > - alts = alts + list(map(lambda a : arch_canonicalize(a, > args.misa_spec), alts)) > + alts = list(map(lambda a : arch_canonicalize(a, args.misa_spec), > alts)) > > # Drop duplicated entry. > alts = unique(alts) > > then I can't link `-march=rv32imafdcv`, I need > `-march=rv32imacv_zicsr_zve32f_zve32x_zve64x_zvl128b_zvl32b_zvl64b`. That's > kind of a headache for users to type in.
Yes, that's a headache for users, but arch string canonicalization is hiddened at the process, so the user could still just use rv32imafdcv at compile time and multi-lib config. And the driver and multilib-generator (with arch_canonicalize) script will handle those headache in the background.