aboutsummaryrefslogtreecommitdiff
path: root/llvm/lib/Target/WebAssembly/WebAssemblyTargetMachine.cpp
diff options
context:
space:
mode:
authorCongcong Cai <congcongcai0907@163.com>2024-02-01 07:26:58 +0800
committerGitHub <noreply@github.com>2024-02-01 07:26:58 +0800
commit5561beae296bded328d307d625f37805a049cddf (patch)
tree94deed263eee0de4491901bafb17f8278e1251eb /llvm/lib/Target/WebAssembly/WebAssemblyTargetMachine.cpp
parenta5a8cbb110384825b99228891576f799082f200e (diff)
downloadllvm-5561beae296bded328d307d625f37805a049cddf.zip
llvm-5561beae296bded328d307d625f37805a049cddf.tar.gz
llvm-5561beae296bded328d307d625f37805a049cddf.tar.bz2
[WebAssembly] avoid to enable explicit disabled feature (#80094)
Diffstat (limited to 'llvm/lib/Target/WebAssembly/WebAssemblyTargetMachine.cpp')
-rw-r--r--llvm/lib/Target/WebAssembly/WebAssemblyTargetMachine.cpp10
1 files changed, 8 insertions, 2 deletions
diff --git a/llvm/lib/Target/WebAssembly/WebAssemblyTargetMachine.cpp b/llvm/lib/Target/WebAssembly/WebAssemblyTargetMachine.cpp
index 2db1b64..981d28a 100644
--- a/llvm/lib/Target/WebAssembly/WebAssemblyTargetMachine.cpp
+++ b/llvm/lib/Target/WebAssembly/WebAssemblyTargetMachine.cpp
@@ -200,7 +200,8 @@ public:
bool runOnModule(Module &M) override {
FeatureBitset Features = coalesceFeatures(M);
- std::string FeatureStr = getFeatureString(Features);
+ std::string FeatureStr =
+ getFeatureString(Features, WasmTM->getTargetFeatureString());
WasmTM->setTargetFeatureString(FeatureStr);
for (auto &F : M)
replaceFeatures(F, FeatureStr);
@@ -238,12 +239,17 @@ private:
return Features;
}
- std::string getFeatureString(const FeatureBitset &Features) {
+ static std::string getFeatureString(const FeatureBitset &Features,
+ StringRef TargetFS) {
std::string Ret;
for (const SubtargetFeatureKV &KV : WebAssemblyFeatureKV) {
if (Features[KV.Value])
Ret += (StringRef("+") + KV.Key + ",").str();
}
+ SubtargetFeatures TF{TargetFS};
+ for (std::string const &F : TF.getFeatures())
+ if (!SubtargetFeatures::isEnabled(F))
+ Ret += F + ",";
return Ret;
}