diff options
author | Paulo Matos <pmatos@igalia.com> | 2021-07-28 15:11:23 +0200 |
---|---|---|
committer | Paulo Matos <pmatos@igalia.com> | 2021-08-02 19:40:00 +0200 |
commit | ce1c59dea6d01e8ec3d4cb911438254283e4646c (patch) | |
tree | aaee811a7c4eaeac10d9ef23a5fa9c8a2a3ce926 /llvm/lib/Target/WebAssembly/WebAssemblyTargetMachine.cpp | |
parent | bb725c98037eb8ad2ca2033427103b3503d57b2f (diff) | |
download | llvm-ce1c59dea6d01e8ec3d4cb911438254283e4646c.zip llvm-ce1c59dea6d01e8ec3d4cb911438254283e4646c.tar.gz llvm-ce1c59dea6d01e8ec3d4cb911438254283e4646c.tar.bz2 |
[WebAssembly] Add new pass to lower int/ptr conversions of reftypes
Add new pass LowerRefTypesIntPtrConv to generate trap
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(); |