llvmorg-github-actions[bot] wrote:

<!--LLVM PR SUMMARY COMMENT-->

@llvm/pr-subscribers-backend-webassembly

Author: Aiden Grossman (boomanaiden154)

<details>
<summary>Changes</summary>

Standard pass porting.


---
Full diff: https://github.com/llvm/llvm-project/pull/208986.diff


4 Files Affected:

- (modified) llvm/lib/Target/WebAssembly/WebAssembly.h (+9-2) 
- (modified) llvm/lib/Target/WebAssembly/WebAssemblyFixFunctionBitcasts.cpp 
(+20-7) 
- (modified) llvm/lib/Target/WebAssembly/WebAssemblyPassRegistry.def (+1) 
- (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 cf5ff90d635f4..0d215264b6bbc 100644
--- a/llvm/lib/Target/WebAssembly/WebAssembly.h
+++ b/llvm/lib/Target/WebAssembly/WebAssembly.h
@@ -40,7 +40,14 @@ class WebAssemblyAddMissingPrototypesPass
 };
 
 ModulePass *createWebAssemblyAddMissingPrototypesLegacyPass();
-ModulePass *createWebAssemblyFixFunctionBitcasts();
+
+class WebAssemblyFixFunctionBitcastsPass
+    : public RequiredPassInfoMixin<WebAssemblyFixFunctionBitcastsPass> {
+public:
+  PreservedAnalyses run(Module &M, ModuleAnalysisManager &MAM);
+};
+
+ModulePass *createWebAssemblyFixFunctionBitcastsLegacyPass();
 FunctionPass *createWebAssemblyOptimizeReturned();
 FunctionPass *createWebAssemblyRefTypeMem2Local();
 FunctionPass *createWebAssemblyReduceToAnyAllTrue(WebAssemblyTargetMachine 
&TM);
@@ -91,7 +98,6 @@ FunctionPass *createWebAssemblyPeephole();
 ModulePass *createWebAssemblyMCLowerPrePass();
 
 // PassRegistry initialization declarations.
-void initializeFixFunctionBitcastsPass(PassRegistry &);
 void initializeOptimizeReturnedPass(PassRegistry &);
 void initializeWebAssemblyRefTypeMem2LocalPass(PassRegistry &);
 void initializeWebAssemblyAddMissingPrototypesLegacyPass(PassRegistry &);
@@ -105,6 +111,7 @@ void initializeWebAssemblyDebugFixupPass(PassRegistry &);
 void initializeWebAssemblyExceptionInfoPass(PassRegistry &);
 void initializeWebAssemblyExplicitLocalsPass(PassRegistry &);
 void initializeWebAssemblyFixBrTableDefaultsPass(PassRegistry &);
+void initializeWebAssemblyFixFunctionBitcastsLegacyPass(PassRegistry &);
 void initializeWebAssemblyFixIrreducibleControlFlowPass(PassRegistry &);
 void initializeWebAssemblyLateEHPreparePass(PassRegistry &);
 void initializeWebAssemblyLowerBrUnlessPass(PassRegistry &);
diff --git a/llvm/lib/Target/WebAssembly/WebAssemblyFixFunctionBitcasts.cpp 
b/llvm/lib/Target/WebAssembly/WebAssemblyFixFunctionBitcasts.cpp
index f4fe3ccd4bf9e..6a8d00140e4db 100644
--- a/llvm/lib/Target/WebAssembly/WebAssemblyFixFunctionBitcasts.cpp
+++ b/llvm/lib/Target/WebAssembly/WebAssemblyFixFunctionBitcasts.cpp
@@ -23,11 +23,13 @@
 
//===----------------------------------------------------------------------===//
 
 #include "WebAssembly.h"
+#include "llvm/IR/Analysis.h"
 #include "llvm/IR/Constants.h"
 #include "llvm/IR/IRBuilder.h"
 #include "llvm/IR/Instructions.h"
 #include "llvm/IR/Module.h"
 #include "llvm/IR/Operator.h"
+#include "llvm/IR/PassManager.h"
 #include "llvm/Pass.h"
 #include "llvm/Support/Debug.h"
 #include "llvm/Support/raw_ostream.h"
@@ -36,7 +38,7 @@ using namespace llvm;
 #define DEBUG_TYPE "wasm-fix-function-bitcasts"
 
 namespace {
-class FixFunctionBitcasts final : public ModulePass {
+class WebAssemblyFixFunctionBitcastsLegacy final : public ModulePass {
   StringRef getPassName() const override {
     return "WebAssembly Fix Function Bitcasts";
   }
@@ -50,16 +52,16 @@ class FixFunctionBitcasts final : public ModulePass {
 
 public:
   static char ID;
-  FixFunctionBitcasts() : ModulePass(ID) {}
+  WebAssemblyFixFunctionBitcastsLegacy() : ModulePass(ID) {}
 };
 } // End anonymous namespace
 
-char FixFunctionBitcasts::ID = 0;
-INITIALIZE_PASS(FixFunctionBitcasts, DEBUG_TYPE,
+char WebAssemblyFixFunctionBitcastsLegacy::ID = 0;
+INITIALIZE_PASS(WebAssemblyFixFunctionBitcastsLegacy, DEBUG_TYPE,
                 "Fix mismatching bitcasts for WebAssembly", false, false)
 
-ModulePass *llvm::createWebAssemblyFixFunctionBitcasts() {
-  return new FixFunctionBitcasts();
+ModulePass *llvm::createWebAssemblyFixFunctionBitcastsLegacyPass() {
+  return new WebAssemblyFixFunctionBitcastsLegacy();
 }
 
 // Recursively descend the def-use lists from V to find non-bitcast users of
@@ -220,7 +222,7 @@ static bool shouldFixMainFunction(FunctionType *FuncTy, 
FunctionType *MainTy) {
          !FuncTy->isVarArg();
 }
 
-bool FixFunctionBitcasts::runOnModule(Module &M) {
+static bool fixFunctionBitcasts(Module &M) {
   LLVM_DEBUG(dbgs() << "********** Fix Function Bitcasts **********\n");
 
   Function *Main = nullptr;
@@ -298,3 +300,14 @@ bool FixFunctionBitcasts::runOnModule(Module &M) {
 
   return true;
 }
+
+bool WebAssemblyFixFunctionBitcastsLegacy::runOnModule(Module &M) {
+  return fixFunctionBitcasts(M);
+}
+
+PreservedAnalyses
+WebAssemblyFixFunctionBitcastsPass::run(Module &M, ModuleAnalysisManager &MAM) 
{
+  return fixFunctionBitcasts(M)
+             ? PreservedAnalyses::none().preserveSet<CFGAnalyses>()
+             : PreservedAnalyses::all();
+}
diff --git a/llvm/lib/Target/WebAssembly/WebAssemblyPassRegistry.def 
b/llvm/lib/Target/WebAssembly/WebAssemblyPassRegistry.def
index 60f902cbfb77e..01f4394454a03 100644
--- a/llvm/lib/Target/WebAssembly/WebAssemblyPassRegistry.def
+++ b/llvm/lib/Target/WebAssembly/WebAssemblyPassRegistry.def
@@ -15,6 +15,7 @@
 #define MODULE_PASS(NAME, CREATE_PASS)
 #endif
 MODULE_PASS("wasm-add-missing-prototypes", 
WebAssemblyAddMissingPrototypesPass())
+MODULE_PASS("wasm-fix-function-bitcasts", WebAssemblyFixFunctionBitcastsPass())
 #undef MODULE_PASS
 
 #ifndef MACHINE_FUNCTION_PASS
diff --git a/llvm/lib/Target/WebAssembly/WebAssemblyTargetMachine.cpp 
b/llvm/lib/Target/WebAssembly/WebAssemblyTargetMachine.cpp
index d71cd7c1ca6d0..073edc6d98623 100644
--- a/llvm/lib/Target/WebAssembly/WebAssemblyTargetMachine.cpp
+++ b/llvm/lib/Target/WebAssembly/WebAssemblyTargetMachine.cpp
@@ -96,7 +96,7 @@ LLVMInitializeWebAssemblyTarget() {
   initializeWebAssemblyAddMissingPrototypesLegacyPass(PR);
   initializeWebAssemblyLowerEmscriptenEHSjLjPass(PR);
   initializeLowerGlobalDtorsLegacyPassPass(PR);
-  initializeFixFunctionBitcastsPass(PR);
+  initializeWebAssemblyFixFunctionBitcastsLegacyPass(PR);
   initializeOptimizeReturnedPass(PR);
   initializeWebAssemblyRefTypeMem2LocalPass(PR);
   initializeWebAssemblyArgumentMovePass(PR);
@@ -494,7 +494,7 @@ void WebAssemblyPassConfig::addIRPasses() {
 
   // Fix function bitcasts, as WebAssembly requires caller and callee 
signatures
   // to match.
-  addPass(createWebAssemblyFixFunctionBitcasts());
+  addPass(createWebAssemblyFixFunctionBitcastsLegacyPass());
 
   // Optimize "returned" function attributes.
   if (getOptLevel() != CodeGenOptLevel::None)

``````````

</details>


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

Reply via email to