https://gcc.gnu.org/bugzilla/show_bug.cgi?id=121612
--- Comment #1 from Paul-Antoine Arras <parras at gcc dot gnu.org> --- Actually we have: /* { dg-require-effective-target riscv_zvfh } */ so it is check_effective_target_riscv_zvfh (without trailing _ok) that gets called, hence the lack of runtime check. If we replace it with: /* { dg-require-effective-target riscv_zvfh_ok } */ then check_effective_target_riscv_zvfh_ok gets called and the runtime check fails with: xgcc: error: '-march=rv64gcvv_zicsr_zifencei_zaamo_zalrsc': extension 'v' appear more than one time This is caused by: set gcc_march [regsub {[[:alnum:]]*} [riscv_get_arch] &v] which unconditionally adds 'v' to march.