Index: llvm/lib/Support/RISCVISAInfo.cpp =================================================================== --- llvm/lib/Support/RISCVISAInfo.cpp +++ llvm/lib/Support/RISCVISAInfo.cpp @@ -1101,6 +1101,8 @@ std::string ExtName = Ext.first; if (ExtName == "i") // i is not recognized in clang -cc1 continue; + if (!isSupportedExtension(ExtName)) + continue; std::string Feature = isExperimentalExtension(ExtName) ? "+experimental-" + ExtName : "+" + ExtName; Index: llvm/unittests/Support/RISCVISAInfoTest.cpp =================================================================== --- llvm/unittests/Support/RISCVISAInfoTest.cpp +++ llvm/unittests/Support/RISCVISAInfoTest.cpp @@ -457,3 +457,10 @@ EXPECT_THAT((*MaybeISAInfo2)->toFeatureVector(), ElementsAre("+e", "+experimental-zihintntl", "+xventanacondops")); } + +TEST(ToFeatureVector, UnsupportedExtensionsAreDropped) { + auto MaybeISAInfo = + RISCVISAInfo::parseNormalizedArchString("rv64i2p0_m2p0_xmadeup1p0"); + ASSERT_THAT_EXPECTED(MaybeISAInfo, Succeeded()); + EXPECT_THAT((*MaybeISAInfo)->toFeatureVector(), ElementsAre("+m")); +}