When giving gcc a -march string with a custom extension of version 0 (for example pulpv0) then gcc will think assign in the default version of 2p0.
In gcc/common/config/riscv/riscv-common.c the function riscv_subset_list::parsing_subset_version falls back to the default version (2p0) when parsing if the major and minor version are both zero (which is the case for the string "pulpv0"). This means both "pulpv0" and "pulpv2" will get assigned the version 2p0. Looks wrong to me. Robert