llvmorg-github-actions[bot] wrote:
<!--LLVM PR SUMMARY COMMENT--> @llvm/pr-subscribers-backend-webassembly Author: Aiden Grossman (boomanaiden154) <details> <summary>Changes</summary> Standard NewPM pass porting. --- Full diff: https://github.com/llvm/llvm-project/pull/209055.diff 5 Files Affected: - (modified) llvm/lib/Target/WebAssembly/WebAssembly.h (+12-2) - (modified) llvm/lib/Target/WebAssembly/WebAssemblyCodeGenPassBuilder.cpp (+1) - (modified) llvm/lib/Target/WebAssembly/WebAssemblyNullifyDebugValueLists.cpp (+23-8) - (modified) llvm/lib/Target/WebAssembly/WebAssemblyPassRegistry.def (+2) - (modified) llvm/lib/Target/WebAssembly/WebAssemblyTargetMachine.cpp (+2-2) ``````````diff diff --git a/llvm/lib/Target/WebAssembly/WebAssembly.h b/llvm/lib/Target/WebAssembly/WebAssembly.h index c4820ce7b330a..1aaca95a1a5a6 100644 --- a/llvm/lib/Target/WebAssembly/WebAssembly.h +++ b/llvm/lib/Target/WebAssembly/WebAssembly.h @@ -18,6 +18,8 @@ #include "GISel/WebAssemblyRegisterBankInfo.h" #include "WebAssemblySubtarget.h" #include "llvm/CodeGen/GlobalISel/InstructionSelector.h" +#include "llvm/CodeGen/MachineFunction.h" +#include "llvm/CodeGen/MachineFunctionAnalysisManager.h" #include "llvm/CodeGen/SelectionDAGISel.h" #include "llvm/IR/Analysis.h" #include "llvm/IR/PassManager.h" @@ -127,7 +129,15 @@ FunctionPass *createWebAssemblyCleanCodeAfterTrap(); // Late passes. FunctionPass *createWebAssemblyReplacePhysRegs(); -FunctionPass *createWebAssemblyNullifyDebugValueLists(); + +class WebAssemblyNullifyDebugValueListsPass + : public RequiredPassInfoMixin<WebAssemblyNullifyDebugValueListsPass> { +public: + PreservedAnalyses run(MachineFunction &MF, + MachineFunctionAnalysisManager &MFAM); +}; + +FunctionPass *createWebAssemblyNullifyDebugValueListsLegacyPass(); FunctionPass *createWebAssemblyOptimizeLiveIntervals(); FunctionPass *createWebAssemblyMemIntrinsicResults(); FunctionPass *createWebAssemblyRegStackify(CodeGenOptLevel OptLevel); @@ -166,7 +176,7 @@ void initializeWebAssemblyLowerBrUnlessPass(PassRegistry &); void initializeWebAssemblyLowerEmscriptenEHSjLjLegacyPass(PassRegistry &); void initializeWebAssemblyMCLowerPrePassPass(PassRegistry &); void initializeWebAssemblyMemIntrinsicResultsPass(PassRegistry &); -void initializeWebAssemblyNullifyDebugValueListsPass(PassRegistry &); +void initializeWebAssemblyNullifyDebugValueListsLegacyPass(PassRegistry &); void initializeWebAssemblyOptimizeLiveIntervalsPass(PassRegistry &); void initializeWebAssemblyPeepholePass(PassRegistry &); void initializeWebAssemblyRegColoringPass(PassRegistry &); diff --git a/llvm/lib/Target/WebAssembly/WebAssemblyCodeGenPassBuilder.cpp b/llvm/lib/Target/WebAssembly/WebAssemblyCodeGenPassBuilder.cpp index b5384b3e005c7..d396c6a7495a4 100644 --- a/llvm/lib/Target/WebAssembly/WebAssemblyCodeGenPassBuilder.cpp +++ b/llvm/lib/Target/WebAssembly/WebAssemblyCodeGenPassBuilder.cpp @@ -144,6 +144,7 @@ void WebAssemblyCodeGenPassBuilder::addPreEmitPass( // Nullify DBG_VALUE_LISTs that we cannot handle. // TODO(boomanaiden154): WebAssemblyNullifyDebugValueLists + addMachineFunctionPass(WebAssemblyNullifyDebugValueListsPass(), PMW); // Remove any unreachable blocks that may be left floating around. // Rare, but possible. Needed for WebAssemblyFixIrreducibleControlFlow. diff --git a/llvm/lib/Target/WebAssembly/WebAssemblyNullifyDebugValueLists.cpp b/llvm/lib/Target/WebAssembly/WebAssemblyNullifyDebugValueLists.cpp index 23062554aa171..1ebe6a785f6d5 100644 --- a/llvm/lib/Target/WebAssembly/WebAssemblyNullifyDebugValueLists.cpp +++ b/llvm/lib/Target/WebAssembly/WebAssemblyNullifyDebugValueLists.cpp @@ -15,13 +15,17 @@ //===----------------------------------------------------------------------===// #include "WebAssembly.h" +#include "llvm/CodeGen/MachineFunctionAnalysisManager.h" #include "llvm/CodeGen/MachineFunctionPass.h" +#include "llvm/CodeGen/MachinePassManager.h" +#include "llvm/IR/Analysis.h" using namespace llvm; #define DEBUG_TYPE "wasm-nullify-dbg-value-lists" namespace { -class WebAssemblyNullifyDebugValueLists final : public MachineFunctionPass { +class WebAssemblyNullifyDebugValueListsLegacy final + : public MachineFunctionPass { StringRef getPassName() const override { return "WebAssembly Nullify DBG_VALUE_LISTs"; } @@ -30,20 +34,19 @@ class WebAssemblyNullifyDebugValueLists final : public MachineFunctionPass { public: static char ID; // Pass identification, replacement for typeid - WebAssemblyNullifyDebugValueLists() : MachineFunctionPass(ID) {} + WebAssemblyNullifyDebugValueListsLegacy() : MachineFunctionPass(ID) {} }; } // end anonymous namespace -char WebAssemblyNullifyDebugValueLists::ID = 0; -INITIALIZE_PASS(WebAssemblyNullifyDebugValueLists, DEBUG_TYPE, +char WebAssemblyNullifyDebugValueListsLegacy::ID = 0; +INITIALIZE_PASS(WebAssemblyNullifyDebugValueListsLegacy, DEBUG_TYPE, "WebAssembly Nullify DBG_VALUE_LISTs", false, false) -FunctionPass *llvm::createWebAssemblyNullifyDebugValueLists() { - return new WebAssemblyNullifyDebugValueLists(); +FunctionPass *llvm::createWebAssemblyNullifyDebugValueListsLegacyPass() { + return new WebAssemblyNullifyDebugValueListsLegacy(); } -bool WebAssemblyNullifyDebugValueLists::runOnMachineFunction( - MachineFunction &MF) { +static bool nullifyDebugValueLists(MachineFunction &MF) { LLVM_DEBUG(dbgs() << "********** Nullify DBG_VALUE_LISTs **********\n" "********** Function: " << MF.getName() << '\n'); @@ -61,3 +64,15 @@ bool WebAssemblyNullifyDebugValueLists::runOnMachineFunction( } return Changed; } + +bool WebAssemblyNullifyDebugValueListsLegacy::runOnMachineFunction( + MachineFunction &MF) { + return nullifyDebugValueLists(MF); +} + +PreservedAnalyses WebAssemblyNullifyDebugValueListsPass::run( + MachineFunction &MF, MachineFunctionAnalysisManager &MFAM) { + return nullifyDebugValueLists(MF) ? getMachineFunctionPassPreservedAnalyses() + .preserveSet<CFGAnalyses>() + : PreservedAnalyses::all(); +} diff --git a/llvm/lib/Target/WebAssembly/WebAssemblyPassRegistry.def b/llvm/lib/Target/WebAssembly/WebAssemblyPassRegistry.def index a6da272bf3ba7..2c7988c5cef40 100644 --- a/llvm/lib/Target/WebAssembly/WebAssemblyPassRegistry.def +++ b/llvm/lib/Target/WebAssembly/WebAssemblyPassRegistry.def @@ -33,4 +33,6 @@ FUNCTION_PASS("wasm-ref-type-mem2local", WebAssemblyRefTypeMem2LocalPass()) #define MACHINE_FUNCTION_PASS(NAME, CREATE_PASS) #endif MACHINE_FUNCTION_PASS("wasm-isel", WebAssemblyISelDAGToDAGPass(*this, getOptLevel())) +MACHINE_FUNCTION_PASS("wasm-nullify-dbg-value-lists", + WebAssemblyNullifyDebugValueListsPass()) #undef MACHINE_FUNCTION_PASS diff --git a/llvm/lib/Target/WebAssembly/WebAssemblyTargetMachine.cpp b/llvm/lib/Target/WebAssembly/WebAssemblyTargetMachine.cpp index 9d382451f5123..d402cf504d336 100644 --- a/llvm/lib/Target/WebAssembly/WebAssemblyTargetMachine.cpp +++ b/llvm/lib/Target/WebAssembly/WebAssemblyTargetMachine.cpp @@ -107,7 +107,7 @@ LLVMInitializeWebAssemblyTarget() { initializeWebAssemblyMemIntrinsicResultsPass(PR); initializeWebAssemblyRegStackifyPass(PR); initializeWebAssemblyRegColoringPass(PR); - initializeWebAssemblyNullifyDebugValueListsPass(PR); + initializeWebAssemblyNullifyDebugValueListsLegacyPass(PR); initializeWebAssemblyFixIrreducibleControlFlowPass(PR); initializeWebAssemblyLateEHPreparePass(PR); initializeWebAssemblyExceptionInfoPass(PR); @@ -439,7 +439,7 @@ void WebAssemblyPassConfig::addPreEmitPass() { TargetPassConfig::addPreEmitPass(); // Nullify DBG_VALUE_LISTs that we cannot handle. - addPass(createWebAssemblyNullifyDebugValueLists()); + addPass(createWebAssemblyNullifyDebugValueListsLegacyPass()); // Remove any unreachable blocks that may be left floating around. // Rare, but possible. Needed for WebAssemblyFixIrreducibleControlFlow. `````````` </details> https://github.com/llvm/llvm-project/pull/209055 _______________________________________________ llvm-branch-commits mailing list [email protected] https://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-branch-commits
