diff options
author | Heejin Ahn <aheejin@gmail.com> | 2020-12-25 20:23:33 -0800 |
---|---|---|
committer | Heejin Ahn <aheejin@gmail.com> | 2021-01-09 02:02:54 -0800 |
commit | 52e240a0721e4120a7143f6f5bab4760d28d48e8 (patch) | |
tree | 3e710d41f4d7d7cc0e2bb1be23ba9842391be8b8 /llvm/lib/Target/WebAssembly/WebAssemblyCFGStackify.cpp | |
parent | 9e4eadeb135d140b3a9e499354472170017cbe58 (diff) | |
download | llvm-52e240a0721e4120a7143f6f5bab4760d28d48e8.zip llvm-52e240a0721e4120a7143f6f5bab4760d28d48e8.tar.gz llvm-52e240a0721e4120a7143f6f5bab4760d28d48e8.tar.bz2 |
[WebAssembly] Remove exnref and br_on_exn
This removes `exnref` type and `br_on_exn` instruction. This is
effectively NFC because most uses of these were already removed in the
previous CLs.
Reviewed By: dschuff, tlively
Differential Revision: https://reviews.llvm.org/D94041
Diffstat (limited to 'llvm/lib/Target/WebAssembly/WebAssemblyCFGStackify.cpp')
-rw-r--r-- | llvm/lib/Target/WebAssembly/WebAssemblyCFGStackify.cpp | 27 |
1 files changed, 1 insertions, 26 deletions
diff --git a/llvm/lib/Target/WebAssembly/WebAssemblyCFGStackify.cpp b/llvm/lib/Target/WebAssembly/WebAssemblyCFGStackify.cpp index 0f4379e..7a56c58 100644 --- a/llvm/lib/Target/WebAssembly/WebAssemblyCFGStackify.cpp +++ b/llvm/lib/Target/WebAssembly/WebAssemblyCFGStackify.cpp @@ -242,20 +242,12 @@ void WebAssemblyCFGStackify::placeBlockMarker(MachineBasicBlock &MBB) { // which reduces overall stack height. MachineBasicBlock *Header = nullptr; bool IsBranchedTo = false; - bool IsBrOnExn = false; - MachineInstr *BrOnExn = nullptr; int MBBNumber = MBB.getNumber(); for (MachineBasicBlock *Pred : MBB.predecessors()) { if (Pred->getNumber() < MBBNumber) { Header = Header ? MDT.findNearestCommonDominator(Header, Pred) : Pred; - if (explicitlyBranchesTo(Pred, &MBB)) { + if (explicitlyBranchesTo(Pred, &MBB)) IsBranchedTo = true; - if (Pred->getFirstTerminator()->getOpcode() == WebAssembly::BR_ON_EXN) { - IsBrOnExn = true; - assert(!BrOnExn && "There should be only one br_on_exn per block"); - BrOnExn = &*Pred->getFirstTerminator(); - } - } } } if (!Header) @@ -340,22 +332,7 @@ void WebAssemblyCFGStackify::placeBlockMarker(MachineBasicBlock &MBB) { } // Add the BLOCK. - - // 'br_on_exn' extracts exnref object and pushes variable number of values - // depending on its tag. For C++ exception, its a single i32 value, and the - // generated code will be in the form of: - // block i32 - // br_on_exn 0, $__cpp_exception - // rethrow - // end_block WebAssembly::BlockType ReturnType = WebAssembly::BlockType::Void; - if (IsBrOnExn) { - const char *TagName = BrOnExn->getOperand(1).getSymbolName(); - if (std::strcmp(TagName, "__cpp_exception") != 0) - llvm_unreachable("Only C++ exception is supported"); - ReturnType = WebAssembly::BlockType::I32; - } - auto InsertPos = getLatestInsertPos(Header, BeforeSet, AfterSet); MachineInstr *Begin = BuildMI(*Header, InsertPos, Header->findDebugLoc(InsertPos), @@ -776,8 +753,6 @@ static unsigned getCopyOpcode(const TargetRegisterClass *RC) { return WebAssembly::COPY_FUNCREF; if (RC == &WebAssembly::EXTERNREFRegClass) return WebAssembly::COPY_EXTERNREF; - if (RC == &WebAssembly::EXNREFRegClass) - return WebAssembly::COPY_EXNREF; llvm_unreachable("Unexpected register class"); } |