From 5b24282a50654ff86c018387d0624be7147f443d Mon Sep 17 00:00:00 2001 From: Heejin Ahn Date: Sun, 25 Jul 2021 18:00:52 -0700 Subject: [PATCH] [WebAssembly] Remove dominator dependency in WasmEHPrepare (NFC) Dominator trees were previously used for an optimization related to `wasm.lsda` but the optimization was removed in D97309. Currently dominators are not doing anything in this pass. Also removes some `include` lines without which it compiles. Reviewed By: tlively Differential Revision: https://reviews.llvm.org/D106811 --- lib/CodeGen/WasmEHPrepare.cpp | 23 +++-------------------- 1 file changed, 3 insertions(+), 20 deletions(-) diff --git a/lib/CodeGen/WasmEHPrepare.cpp b/lib/CodeGen/WasmEHPrepare.cpp index 19ebbe3a1c8..c4c84cd921f 100644 --- a/lib/CodeGen/WasmEHPrepare.cpp +++ b/lib/CodeGen/WasmEHPrepare.cpp @@ -77,20 +77,12 @@ // //===----------------------------------------------------------------------===// -#include "llvm/ADT/SetVector.h" -#include "llvm/ADT/Statistic.h" -#include "llvm/ADT/Triple.h" -#include "llvm/Analysis/DomTreeUpdater.h" -#include "llvm/CodeGen/Passes.h" #include "llvm/CodeGen/TargetLowering.h" #include "llvm/CodeGen/TargetSubtargetInfo.h" #include "llvm/CodeGen/WasmEHFuncInfo.h" -#include "llvm/IR/Dominators.h" #include "llvm/IR/IRBuilder.h" -#include "llvm/IR/Intrinsics.h" #include "llvm/IR/IntrinsicsWebAssembly.h" #include "llvm/InitializePasses.h" -#include "llvm/Pass.h" #include "llvm/Transforms/Utils/BasicBlockUtils.h" using namespace llvm; @@ -124,7 +116,6 @@ public: static char ID; // Pass identification, replacement for typeid WasmEHPrepare() : FunctionPass(ID) {} - void getAnalysisUsage(AnalysisUsage &AU) const override; bool doInitialization(Module &M) override; bool runOnFunction(Function &F) override; @@ -137,16 +128,11 @@ public: char WasmEHPrepare::ID = 0; INITIALIZE_PASS_BEGIN(WasmEHPrepare, DEBUG_TYPE, "Prepare WebAssembly exceptions", false, false) -INITIALIZE_PASS_DEPENDENCY(DominatorTreeWrapperPass) INITIALIZE_PASS_END(WasmEHPrepare, DEBUG_TYPE, "Prepare WebAssembly exceptions", false, false) FunctionPass *llvm::createWasmEHPass() { return new WasmEHPrepare(); } -void WasmEHPrepare::getAnalysisUsage(AnalysisUsage &AU) const { - AU.addRequired(); -} - bool WasmEHPrepare::doInitialization(Module &M) { IRBuilder<> IRB(M.getContext()); LPadContextTy = StructType::get(IRB.getInt32Ty(), // lpad_index @@ -159,14 +145,14 @@ bool WasmEHPrepare::doInitialization(Module &M) { // Erase the specified BBs if the BB does not have any remaining predecessors, // and also all its dead children. template -static void eraseDeadBBsAndChildren(const Container &BBs, DomTreeUpdater *DTU) { +static void eraseDeadBBsAndChildren(const Container &BBs) { SmallVector WL(BBs.begin(), BBs.end()); while (!WL.empty()) { auto *BB = WL.pop_back_val(); if (!pred_empty(BB)) continue; WL.append(succ_begin(BB), succ_end(BB)); - DeleteDeadBlock(BB, DTU); + DeleteDeadBlock(BB); } } @@ -178,9 +164,6 @@ bool WasmEHPrepare::runOnFunction(Function &F) { } bool WasmEHPrepare::prepareThrows(Function &F) { - auto &DT = getAnalysis().getDomTree(); - DomTreeUpdater DTU(&DT, /*PostDominatorTree*/ nullptr, - DomTreeUpdater::UpdateStrategy::Eager); Module &M = *F.getParent(); IRBuilder<> IRB(F.getContext()); bool Changed = false; @@ -203,7 +186,7 @@ bool WasmEHPrepare::prepareThrows(Function &F) { InstList.erase(std::next(BasicBlock::iterator(ThrowI)), InstList.end()); IRB.SetInsertPoint(BB); IRB.CreateUnreachable(); - eraseDeadBBsAndChildren(Succs, &DTU); + eraseDeadBBsAndChildren(Succs); } return Changed;