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/209892.diff


5 Files Affected:

- (modified) llvm/lib/Target/WebAssembly/WebAssembly.h (+10-2) 
- (modified) llvm/lib/Target/WebAssembly/WebAssemblyCleanCodeAfterTrap.cpp 
(+23-7) 
- (modified) llvm/lib/Target/WebAssembly/WebAssemblyCodeGenPassBuilder.cpp 
(+1-1) 
- (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 f4bcfd79cdd79..cf90353f963b9 100644
--- a/llvm/lib/Target/WebAssembly/WebAssembly.h
+++ b/llvm/lib/Target/WebAssembly/WebAssembly.h
@@ -141,7 +141,15 @@ class WebAssemblySetP2AlignOperandsPass
 };
 
 FunctionPass *createWebAssemblySetP2AlignOperandsLegacyPass();
-FunctionPass *createWebAssemblyCleanCodeAfterTrap();
+
+class WebAssemblyCleanCodeAfterTrapPass
+    : public RequiredPassInfoMixin<WebAssemblyCleanCodeAfterTrapPass> {
+public:
+  PreservedAnalyses run(MachineFunction &MF,
+                        MachineFunctionAnalysisManager &MFAM);
+};
+
+FunctionPass *createWebAssemblyCleanCodeAfterTrapLegacyPass();
 
 // Late passes.
 FunctionPass *createWebAssemblyReplacePhysRegs();
@@ -193,7 +201,7 @@ void 
initializeWebAssemblyRefTypeMem2LocalLegacyPass(PassRegistry &);
 void initializeWebAssemblyAddMissingPrototypesLegacyPass(PassRegistry &);
 void initializeWebAssemblyArgumentMoveLegacyPass(PassRegistry &);
 void initializeWebAssemblyAsmPrinterPass(PassRegistry &);
-void initializeWebAssemblyCleanCodeAfterTrapPass(PassRegistry &);
+void initializeWebAssemblyCleanCodeAfterTrapLegacyPass(PassRegistry &);
 void initializeWebAssemblyCFGSortPass(PassRegistry &);
 void initializeWebAssemblyCFGStackifyPass(PassRegistry &);
 void initializeWebAssemblyDAGToDAGISelLegacyPass(PassRegistry &);
diff --git a/llvm/lib/Target/WebAssembly/WebAssemblyCleanCodeAfterTrap.cpp 
b/llvm/lib/Target/WebAssembly/WebAssemblyCleanCodeAfterTrap.cpp
index e5cba3c485473..e8e7ac2b9f63c 100644
--- a/llvm/lib/Target/WebAssembly/WebAssemblyCleanCodeAfterTrap.cpp
+++ b/llvm/lib/Target/WebAssembly/WebAssemblyCleanCodeAfterTrap.cpp
@@ -17,7 +17,10 @@
 #include "WebAssemblyUtilities.h"
 #include "llvm/ADT/SmallVector.h"
 #include "llvm/CodeGen/MachineBlockFrequencyInfo.h"
+#include "llvm/CodeGen/MachineFunctionAnalysisManager.h"
+#include "llvm/CodeGen/MachinePassManager.h"
 #include "llvm/CodeGen/Passes.h"
+#include "llvm/IR/Analysis.h"
 #include "llvm/MC/MCInstrDesc.h"
 #include "llvm/Support/Debug.h"
 #include "llvm/Support/raw_ostream.h"
@@ -26,10 +29,10 @@ using namespace llvm;
 #define DEBUG_TYPE "wasm-clean-code-after-trap"
 
 namespace {
-class WebAssemblyCleanCodeAfterTrap final : public MachineFunctionPass {
+class WebAssemblyCleanCodeAfterTrapLegacy final : public MachineFunctionPass {
 public:
   static char ID; // Pass identification, replacement for typeid
-  WebAssemblyCleanCodeAfterTrap() : MachineFunctionPass(ID) {}
+  WebAssemblyCleanCodeAfterTrapLegacy() : MachineFunctionPass(ID) {}
 
   StringRef getPassName() const override {
     return "WebAssembly Clean Code After Trap";
@@ -39,15 +42,15 @@ class WebAssemblyCleanCodeAfterTrap final : public 
MachineFunctionPass {
 };
 } // end anonymous namespace
 
-char WebAssemblyCleanCodeAfterTrap::ID = 0;
-INITIALIZE_PASS(WebAssemblyCleanCodeAfterTrap, DEBUG_TYPE,
+char WebAssemblyCleanCodeAfterTrapLegacy::ID = 0;
+INITIALIZE_PASS(WebAssemblyCleanCodeAfterTrapLegacy, DEBUG_TYPE,
                 "WebAssembly Clean Code After Trap", false, false)
 
-FunctionPass *llvm::createWebAssemblyCleanCodeAfterTrap() {
-  return new WebAssemblyCleanCodeAfterTrap();
+FunctionPass *llvm::createWebAssemblyCleanCodeAfterTrapLegacyPass() {
+  return new WebAssemblyCleanCodeAfterTrapLegacy();
 }
 
-bool WebAssemblyCleanCodeAfterTrap::runOnMachineFunction(MachineFunction &MF) {
+static bool cleanCodeAfterTrap(MachineFunction &MF) {
   LLVM_DEBUG({
     dbgs() << "********** CleanCodeAfterTrap **********\n"
            << "********** Function: " << MF.getName() << '\n';
@@ -78,3 +81,16 @@ bool 
WebAssemblyCleanCodeAfterTrap::runOnMachineFunction(MachineFunction &MF) {
   }
   return Changed;
 }
+
+bool WebAssemblyCleanCodeAfterTrapLegacy::runOnMachineFunction(
+    MachineFunction &MF) {
+  return cleanCodeAfterTrap(MF);
+}
+
+PreservedAnalyses
+WebAssemblyCleanCodeAfterTrapPass::run(MachineFunction &MF,
+                                       MachineFunctionAnalysisManager &MFAM) {
+  return cleanCodeAfterTrap(MF) ? getMachineFunctionPassPreservedAnalyses()
+                                      .preserveSet<CFGAnalyses>()
+                                : PreservedAnalyses::all();
+}
diff --git a/llvm/lib/Target/WebAssembly/WebAssemblyCodeGenPassBuilder.cpp 
b/llvm/lib/Target/WebAssembly/WebAssemblyCodeGenPassBuilder.cpp
index a86bd28f7b5d4..afd970ea8f577 100644
--- a/llvm/lib/Target/WebAssembly/WebAssemblyCodeGenPassBuilder.cpp
+++ b/llvm/lib/Target/WebAssembly/WebAssemblyCodeGenPassBuilder.cpp
@@ -162,7 +162,7 @@ Error WebAssemblyCodeGenPassBuilder::addInstSelector(
 
   // unreachable is terminator, non-terminator instruction after it is not
   // allowed.
-  // TODO(boomanaiden154): WebAssemblyCleanCodeAfterTrap
+  addMachineFunctionPass(WebAssemblyCleanCodeAfterTrapPass(), PMW);
 
   return Error::success();
 }
diff --git a/llvm/lib/Target/WebAssembly/WebAssemblyPassRegistry.def 
b/llvm/lib/Target/WebAssembly/WebAssemblyPassRegistry.def
index b28efc08678b1..caf32fae60470 100644
--- a/llvm/lib/Target/WebAssembly/WebAssemblyPassRegistry.def
+++ b/llvm/lib/Target/WebAssembly/WebAssemblyPassRegistry.def
@@ -33,6 +33,8 @@ FUNCTION_PASS("wasm-ref-type-mem2local", 
WebAssemblyRefTypeMem2LocalPass())
 #define MACHINE_FUNCTION_PASS(NAME, CREATE_PASS)
 #endif
 MACHINE_FUNCTION_PASS("wasm-argument-move", WebAssemblyArgumentMovePass())
+MACHINE_FUNCTION_PASS("wasm-clean-code-after-trap",
+                      WebAssemblyCleanCodeAfterTrapPass())
 MACHINE_FUNCTION_PASS("wasm-isel", WebAssemblyISelDAGToDAGPass(*this, 
getOptLevel()))
 MACHINE_FUNCTION_PASS("wasm-fix-br-table-defaults",
                       WebAssemblyFixBrTableDefaultsPass())
diff --git a/llvm/lib/Target/WebAssembly/WebAssemblyTargetMachine.cpp 
b/llvm/lib/Target/WebAssembly/WebAssemblyTargetMachine.cpp
index 2751693c33a75..ac44dcc2be674 100644
--- a/llvm/lib/Target/WebAssembly/WebAssemblyTargetMachine.cpp
+++ b/llvm/lib/Target/WebAssembly/WebAssemblyTargetMachine.cpp
@@ -394,7 +394,7 @@ bool WebAssemblyPassConfig::addInstSelector() {
 
   // unreachable is terminator, non-terminator instruction after it is not
   // allowed.
-  addPass(createWebAssemblyCleanCodeAfterTrap());
+  addPass(createWebAssemblyCleanCodeAfterTrapLegacyPass());
 
   return false;
 }
@@ -549,7 +549,7 @@ bool WebAssemblyPassConfig::addGlobalInstructionSelect() {
     addPass(createWebAssemblyArgumentMoveLegacyPass());
     addPass(createWebAssemblySetP2AlignOperandsLegacyPass());
     addPass(createWebAssemblyFixBrTableDefaultsLegacyPass());
-    addPass(createWebAssemblyCleanCodeAfterTrap());
+    addPass(createWebAssemblyCleanCodeAfterTrapLegacyPass());
   }
 
   return false;

``````````

</details>


https://github.com/llvm/llvm-project/pull/209892
_______________________________________________
llvm-branch-commits mailing list
[email protected]
https://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-branch-commits

Reply via email to