diff options
author | Paulo Matos <pmatos@igalia.com> | 2021-07-28 15:11:23 +0200 |
---|---|---|
committer | Paulo Matos <pmatos@igalia.com> | 2021-08-03 09:20:51 +0200 |
commit | d3a0a65bf01dccadee38d726b6c4d9813c84a048 (patch) | |
tree | ac48e7fceaa447146d56afb7f8f5755e66ad3091 /llvm/lib/Target/WebAssembly/WebAssemblyTargetMachine.cpp | |
parent | 735da5f5ad74ad139d3287c897be2057203a6032 (diff) | |
download | llvm-d3a0a65bf01dccadee38d726b6c4d9813c84a048.zip llvm-d3a0a65bf01dccadee38d726b6c4d9813c84a048.tar.gz llvm-d3a0a65bf01dccadee38d726b6c4d9813c84a048.tar.bz2 |
Reland: "[WebAssembly] Add new pass to lower int/ptr conversions of reftypes"
Add new pass LowerRefTypesIntPtrConv to generate debugtrap
instruction for an inttoptr and ptrtoint of a reference type instead
of erroring, since calling these instructions on non-integral pointers
has been since allowed (see ac81cb7e6).
Differential Revision: https://reviews.llvm.org/D107102
Diffstat (limited to 'llvm/lib/Target/WebAssembly/WebAssemblyTargetMachine.cpp')
-rw-r--r-- | llvm/lib/Target/WebAssembly/WebAssemblyTargetMachine.cpp | 7 |
1 files changed, 7 insertions, 0 deletions
diff --git a/llvm/lib/Target/WebAssembly/WebAssemblyTargetMachine.cpp b/llvm/lib/Target/WebAssembly/WebAssemblyTargetMachine.cpp index 746a759..10497e45 100644 --- a/llvm/lib/Target/WebAssembly/WebAssemblyTargetMachine.cpp +++ b/llvm/lib/Target/WebAssembly/WebAssemblyTargetMachine.cpp @@ -332,6 +332,7 @@ public: void addPostRegAlloc() override; bool addGCPasses() override { return false; } void addPreEmitPass() override; + bool addPreISel() override; // No reg alloc bool addRegAssignAndRewriteFast() override { return false; } @@ -518,6 +519,12 @@ void WebAssemblyPassConfig::addPreEmitPass() { addPass(createWebAssemblyMCLowerPrePass()); } +bool WebAssemblyPassConfig::addPreISel() { + TargetPassConfig::addPreISel(); + addPass(createWebAssemblyLowerRefTypesIntPtrConv()); + return false; +} + yaml::MachineFunctionInfo * WebAssemblyTargetMachine::createDefaultFuncInfoYAML() const { return new yaml::WebAssemblyFunctionInfo(); |