diff options
author | Congcong Cai <congcongcai0907@163.com> | 2024-02-01 07:26:58 +0800 |
---|---|---|
committer | GitHub <noreply@github.com> | 2024-02-01 07:26:58 +0800 |
commit | 5561beae296bded328d307d625f37805a049cddf (patch) | |
tree | 94deed263eee0de4491901bafb17f8278e1251eb /llvm/lib/Target/WebAssembly/WebAssemblyTargetMachine.cpp | |
parent | a5a8cbb110384825b99228891576f799082f200e (diff) | |
download | llvm-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.cpp | 10 |
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; } |