[llvm] 9d28ea2 - [WebAssembly] Port WebAssemblyNullifyDebugValueListsPass
via llvm-commits
llvm-commits at lists.llvm.org
Wed Jul 15 07:05:00 PDT 2026
Author: Aiden Grossman
Date: 2026-07-15T07:03:58-07:00
New Revision: 9d28ea2432d4ac2d4f79d5c2a87117a678b74720
URL: https://github.com/llvm/llvm-project/commit/9d28ea2432d4ac2d4f79d5c2a87117a678b74720
DIFF: https://github.com/llvm/llvm-project/commit/9d28ea2432d4ac2d4f79d5c2a87117a678b74720.diff
LOG: [WebAssembly] Port WebAssemblyNullifyDebugValueListsPass
Standard NewPM pass porting.
Reviewers: sbc100, aheejin, dschuff
Pull Request: https://github.com/llvm/llvm-project/pull/209055
Added:
Modified:
llvm/lib/Target/WebAssembly/WebAssembly.h
llvm/lib/Target/WebAssembly/WebAssemblyCodeGenPassBuilder.cpp
llvm/lib/Target/WebAssembly/WebAssemblyNullifyDebugValueLists.cpp
llvm/lib/Target/WebAssembly/WebAssemblyPassRegistry.def
llvm/lib/Target/WebAssembly/WebAssemblyTargetMachine.cpp
Removed:
################################################################################
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 55af1b1a4546e..94de146f1d067 100644
--- a/llvm/lib/Target/WebAssembly/WebAssemblyCodeGenPassBuilder.cpp
+++ b/llvm/lib/Target/WebAssembly/WebAssemblyCodeGenPassBuilder.cpp
@@ -172,7 +172,7 @@ void WebAssemblyCodeGenPassBuilder::addPreEmitPass(
Base::addPreEmitPass(PMW);
// 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.
More information about the llvm-commits
mailing list