[llvm-branch-commits] [WebAssembly] Port WebAssemblyRegColoringPass (PR #210225)

Heejin Ahn via llvm-branch-commits llvm-branch-commits at lists.llvm.org
Sun Jul 19 13:56:55 PDT 2026


================
@@ -329,3 +329,27 @@ bool WebAssemblyRegColoring::runOnMachineFunction(MachineFunction &MF) {
   }
   return true;
 }
+
+bool WebAssemblyRegColoringLegacy::runOnMachineFunction(MachineFunction &MF) {
+  LiveIntervals *Liveness = &getAnalysis<LiveIntervalsWrapperPass>().getLIS();
+  const MachineBlockFrequencyInfo *MBFI =
+      &getAnalysis<MachineBlockFrequencyInfoWrapperPass>().getMBFI();
+  return regColoring(MF, Liveness, MBFI);
+}
+
+PreservedAnalyses
+WebAssemblyRegColoringPass::run(MachineFunction &MF,
+                                MachineFunctionAnalysisManager &MFAM) {
+  // TODO(boomanaiden154): We duplicate this check from above to avoid computing
+  // analyses if we do not need to. We should remove it when remove support for
+  // the LegacyPM and are able to simplify things.
+  if (MF.exposesReturnsTwice())
+    return PreservedAnalyses::all();
----------------
aheejin wrote:

I don't understand. We check this in `regColoring` anyway. Why does checking this in the legacy pass entry point instead cost you more compile time?

So the entry point for the legacy pass is `WebAssemblyRegColoringLegacy::runOnMachineFunction`, and the entry for the new pass is `WebAssemblyRegColoringPass::run`. Both call `regColoring`. This PR currently checks `MF.exposesReturnsTwice` in `WebAssemblyRegColoringPass::run` and `regColoring`. What I suggest is to move the check in `regColoring` to `WebAssemblyRegColoringLegacy::runOnMachineFunction`. This way both the old and the new PM check it in the same way in their entry point functions.

https://github.com/llvm/llvm-project/pull/210225


More information about the llvm-branch-commits mailing list