[clang] [RISCV] Overwrite cpu target features for full arch string in target attribute (PR #77426)
Craig Topper via cfe-commits
cfe-commits at lists.llvm.org
Tue Jan 16 19:06:16 PST 2024
================
@@ -281,10 +248,28 @@ bool RISCVTargetInfo::initFeatureMap(
Features["32bit"] = true;
}
- std::vector<std::string> NewFeaturesVec =
- resolveTargetAttrOverride(FeaturesVec, XLen);
+ // If a target attribute specified a full arch string, override all the ISA
+ // extension target features.
+ const auto I = llvm::find(FeaturesVec, "__RISCV_TargetAttrNeedOverride");
+ if (I != FeaturesVec.end()) {
+ std::vector<std::string> OverrideFeatures =
+ std::vector(std::next(I), FeaturesVec.end());
+
+ // Add back any non ISA extension features, e.g. +relax.
+ auto IsNonISAExtFeature = [](const std::string &Feature) {
+ assert(Feature.size() > 1 && (Feature[0] == '+' || Feature[0] == '-'));
+ std::string Ext = Feature.substr(1); // drop the +/-
----------------
topperc wrote:
StringRef Ext = Feature.drop_front(1)
https://github.com/llvm/llvm-project/pull/77426
More information about the cfe-commits
mailing list