[llvm] fc9a4af - [WebAssembly] Port SelectionDAGISel to NewPM
via llvm-commits
llvm-commits at lists.llvm.org
Mon Jul 13 06:20:20 PDT 2026
Author: Aiden Grossman
Date: 2026-07-13T06:20:15-07:00
New Revision: fc9a4afa9bdc406f1ce4e0dbc078734025ab2d9d
URL: https://github.com/llvm/llvm-project/commit/fc9a4afa9bdc406f1ce4e0dbc078734025ab2d9d
DIFF: https://github.com/llvm/llvm-project/commit/fc9a4afa9bdc406f1ce4e0dbc078734025ab2d9d.diff
LOG: [WebAssembly] Port SelectionDAGISel to NewPM
Similar to other targets, for getting the NewPM rolling.
Reviewers: aheejin, sbc100, dschuff
Pull Request: https://github.com/llvm/llvm-project/pull/208982
Added:
Modified:
llvm/lib/Target/WebAssembly/WebAssembly.h
llvm/lib/Target/WebAssembly/WebAssemblyISelDAGToDAG.cpp
llvm/lib/Target/WebAssembly/WebAssemblyTargetMachine.cpp
Removed:
################################################################################
diff --git a/llvm/lib/Target/WebAssembly/WebAssembly.h b/llvm/lib/Target/WebAssembly/WebAssembly.h
index 6556cb5e25c0e..9b54f49a2dcb6 100644
--- a/llvm/lib/Target/WebAssembly/WebAssembly.h
+++ b/llvm/lib/Target/WebAssembly/WebAssembly.h
@@ -18,6 +18,7 @@
#include "GISel/WebAssemblyRegisterBankInfo.h"
#include "WebAssemblySubtarget.h"
#include "llvm/CodeGen/GlobalISel/InstructionSelector.h"
+#include "llvm/CodeGen/SelectionDAGISel.h"
#include "llvm/PassRegistry.h"
#include "llvm/Support/CodeGen.h"
@@ -48,8 +49,14 @@ FunctionPass *createWebAssemblyPreLegalizerCombiner();
void initializeWebAssemblyPreLegalizerCombinerPass(PassRegistry &);
// ISel and immediate followup passes.
-FunctionPass *createWebAssemblyISelDag(WebAssemblyTargetMachine &TM,
- CodeGenOptLevel OptLevel);
+class WebAssemblyISelDAGToDAGPass : public SelectionDAGISelPass {
+public:
+ WebAssemblyISelDAGToDAGPass(WebAssemblyTargetMachine &TM,
+ CodeGenOptLevel OptLevel);
+};
+
+FunctionPass *createWebAssemblyISelDagLegacyPass(WebAssemblyTargetMachine &TM,
+ CodeGenOptLevel OptLevel);
FunctionPass *createWebAssemblyArgumentMove();
FunctionPass *createWebAssemblySetP2AlignOperands();
FunctionPass *createWebAssemblyCleanCodeAfterTrap();
diff --git a/llvm/lib/Target/WebAssembly/WebAssemblyISelDAGToDAG.cpp b/llvm/lib/Target/WebAssembly/WebAssemblyISelDAGToDAG.cpp
index 69e9e6b5a9717..f9384245d0dfa 100644
--- a/llvm/lib/Target/WebAssembly/WebAssemblyISelDAGToDAG.cpp
+++ b/llvm/lib/Target/WebAssembly/WebAssemblyISelDAGToDAG.cpp
@@ -24,6 +24,7 @@
#include "llvm/IR/Function.h" // To access function attributes.
#include "llvm/IR/IntrinsicsWebAssembly.h"
#include "llvm/MC/MCSymbolWasm.h"
+#include "llvm/Support/CodeGen.h"
#include "llvm/Support/Debug.h"
#include "llvm/Support/KnownBits.h"
#include "llvm/Support/raw_ostream.h"
@@ -658,7 +659,13 @@ bool WebAssemblyDAGToDAGISel::SelectAtomicAddrOperands64(SDNode *Op, SDValue N,
/// This pass converts a legalized DAG into a WebAssembly-specific DAG, ready
/// for instruction scheduling.
-FunctionPass *llvm::createWebAssemblyISelDag(WebAssemblyTargetMachine &TM,
- CodeGenOptLevel OptLevel) {
+WebAssemblyISelDAGToDAGPass::WebAssemblyISelDAGToDAGPass(
+ WebAssemblyTargetMachine &TM, CodeGenOptLevel OptLevel)
+ : SelectionDAGISelPass(
+ std::make_unique<WebAssemblyDAGToDAGISel>(TM, OptLevel)) {}
+
+FunctionPass *
+llvm::createWebAssemblyISelDagLegacyPass(WebAssemblyTargetMachine &TM,
+ CodeGenOptLevel OptLevel) {
return new WebAssemblyDAGToDAGISelLegacy(TM, OptLevel);
}
diff --git a/llvm/lib/Target/WebAssembly/WebAssemblyTargetMachine.cpp b/llvm/lib/Target/WebAssembly/WebAssemblyTargetMachine.cpp
index b1e07502ad73d..4ce04458fb1d8 100644
--- a/llvm/lib/Target/WebAssembly/WebAssemblyTargetMachine.cpp
+++ b/llvm/lib/Target/WebAssembly/WebAssemblyTargetMachine.cpp
@@ -543,8 +543,8 @@ void WebAssemblyPassConfig::addISelPrepare() {
bool WebAssemblyPassConfig::addInstSelector() {
(void)TargetPassConfig::addInstSelector();
- addPass(
- createWebAssemblyISelDag(getWebAssemblyTargetMachine(), getOptLevel()));
+ addPass(createWebAssemblyISelDagLegacyPass(getWebAssemblyTargetMachine(),
+ getOptLevel()));
// Run the argument-move pass immediately after the ScheduleDAG scheduler
// so that we can fix up the ARGUMENT instructions before anything else
// sees them in the wrong place.
More information about the llvm-commits
mailing list