diff options
Diffstat (limited to 'llvm/lib/Target/WebAssembly/WebAssemblyCFGStackify.cpp')
-rw-r--r-- | llvm/lib/Target/WebAssembly/WebAssemblyCFGStackify.cpp | 20 |
1 files changed, 9 insertions, 11 deletions
diff --git a/llvm/lib/Target/WebAssembly/WebAssemblyCFGStackify.cpp b/llvm/lib/Target/WebAssembly/WebAssemblyCFGStackify.cpp index 3362ea5..3cccc57 100644 --- a/llvm/lib/Target/WebAssembly/WebAssemblyCFGStackify.cpp +++ b/llvm/lib/Target/WebAssembly/WebAssemblyCFGStackify.cpp @@ -1681,18 +1681,14 @@ void WebAssemblyCFGStackify::rewriteDepthImmediates(MachineFunction &MF) { Stack.pop_back(); break; - case WebAssembly::END_BLOCK: - Stack.push_back(std::make_pair(&MBB, &MI)); - break; - case WebAssembly::END_TRY: { - // We handle DELEGATE in the default level, because DELEGATE has - // immediate operands to rewrite. - Stack.push_back(std::make_pair(&MBB, &MI)); auto *EHPad = TryToEHPad[EndToBegin[&MI]]; EHPadStack.push_back(EHPad); - break; + [[fallthrough]]; } + case WebAssembly::END_BLOCK: + Stack.push_back(std::make_pair(&MBB, &MI)); + break; case WebAssembly::END_LOOP: Stack.push_back(std::make_pair(EndToBegin[&MI]->getParent(), &MI)); @@ -1707,12 +1703,14 @@ void WebAssemblyCFGStackify::rewriteDepthImmediates(MachineFunction &MF) { MI.getOperand(0).setImm(getRethrowDepth(Stack, EHPadStack)); break; + case WebAssembly::DELEGATE: + RewriteOperands(MI); + Stack.push_back(std::make_pair(&MBB, &MI)); + break; + default: if (MI.isTerminator()) RewriteOperands(MI); - - if (MI.getOpcode() == WebAssembly::DELEGATE) - Stack.push_back(std::make_pair(&MBB, &MI)); break; } } |