https://github.com/optimisan updated 
https://github.com/llvm/llvm-project/pull/130069

>From b5c636f7bc6d46ee6e7798a5c91d2eecb54b8122 Mon Sep 17 00:00:00 2001
From: Akshat Oke <akshat....@amd.com>
Date: Thu, 6 Mar 2025 10:20:36 +0000
Subject: [PATCH 1/2] [CodeGen][NPM] Port MachineSanitizerBinaryMetadata to NPM

---
 .../llvm/CodeGen/SanitizerBinaryMetadata.h    | 26 +++++++++++++
 llvm/include/llvm/InitializePasses.h          |  2 +-
 llvm/include/llvm/Passes/CodeGenPassBuilder.h |  3 +-
 .../llvm/Passes/MachinePassRegistry.def       |  2 +-
 llvm/lib/CodeGen/CodeGen.cpp                  |  2 +-
 llvm/lib/CodeGen/SanitizerBinaryMetadata.cpp  | 37 ++++++++++++++-----
 llvm/lib/Passes/PassBuilder.cpp               |  1 +
 llvm/test/tools/llc/new-pm/pipeline.ll        |  2 +-
 8 files changed, 61 insertions(+), 14 deletions(-)
 create mode 100644 llvm/include/llvm/CodeGen/SanitizerBinaryMetadata.h

diff --git a/llvm/include/llvm/CodeGen/SanitizerBinaryMetadata.h 
b/llvm/include/llvm/CodeGen/SanitizerBinaryMetadata.h
new file mode 100644
index 0000000000000..6cf2e11aa911e
--- /dev/null
+++ b/llvm/include/llvm/CodeGen/SanitizerBinaryMetadata.h
@@ -0,0 +1,26 @@
+//===- llvm/CodeGen/SanitizerBinaryMetadata.h -------------------*- C++ 
-*-===//
+//
+// Part of the LLVM Project, under the Apache License v2.0 with LLVM 
Exceptions.
+// See https://llvm.org/LICENSE.txt for license information.
+// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
+//
+//===----------------------------------------------------------------------===//
+
+#ifndef LLVM_CODEGEN_SANITIZERBINARYMETADATA_H
+#define LLVM_CODEGEN_SANITIZERBINARYMETADATA_H
+
+#include "llvm/CodeGen/MachinePassManager.h"
+
+namespace llvm {
+
+class MachineSanitizerBinaryMetadataPass
+    : public PassInfoMixin<MachineSanitizerBinaryMetadataPass> {
+public:
+  PreservedAnalyses run(MachineFunction &MF,
+                        MachineFunctionAnalysisManager &MFAM);
+  static bool isRequired() { return true; }
+};
+
+} // namespace llvm
+
+#endif // LLVM_CODEGEN_SANITIZERBINARYMETADATA_H
diff --git a/llvm/include/llvm/InitializePasses.h 
b/llvm/include/llvm/InitializePasses.h
index 5bd9824c3120c..c9b9611d5d5d0 100644
--- a/llvm/include/llvm/InitializePasses.h
+++ b/llvm/include/llvm/InitializePasses.h
@@ -206,7 +206,7 @@ void initializeMachineOutlinerPass(PassRegistry &);
 void initializeMachinePipelinerPass(PassRegistry &);
 void initializeMachinePostDominatorTreeWrapperPassPass(PassRegistry &);
 void initializeMachineRegionInfoPassPass(PassRegistry &);
-void initializeMachineSanitizerBinaryMetadataPass(PassRegistry &);
+void initializeMachineSanitizerBinaryMetadataLegacyPass(PassRegistry &);
 void initializeMachineSchedulerLegacyPass(PassRegistry &);
 void initializeMachineSinkingLegacyPass(PassRegistry &);
 void initializeMachineTraceMetricsWrapperPassPass(PassRegistry &);
diff --git a/llvm/include/llvm/Passes/CodeGenPassBuilder.h 
b/llvm/include/llvm/Passes/CodeGenPassBuilder.h
index 5e6e4d13ed2a5..1417104d4b3c4 100644
--- a/llvm/include/llvm/Passes/CodeGenPassBuilder.h
+++ b/llvm/include/llvm/Passes/CodeGenPassBuilder.h
@@ -76,6 +76,7 @@
 #include "llvm/CodeGen/RenameIndependentSubregs.h"
 #include "llvm/CodeGen/ReplaceWithVeclib.h"
 #include "llvm/CodeGen/SafeStack.h"
+#include "llvm/CodeGen/SanitizerBinaryMetadata.h"
 #include "llvm/CodeGen/SelectOptimize.h"
 #include "llvm/CodeGen/ShadowStackGCLowering.h"
 #include "llvm/CodeGen/SjLjEHPrepare.h"
@@ -1004,7 +1005,7 @@ Error CodeGenPassBuilder<Derived, 
TargetMachineT>::addMachinePasses(
   addPass(RemoveLoadsIntoFakeUsesPass());
   addPass(StackMapLivenessPass());
   addPass(LiveDebugValuesPass());
-  addPass(MachineSanitizerBinaryMetadata());
+  addPass(MachineSanitizerBinaryMetadataPass());
 
   if (TM.Options.EnableMachineOutliner &&
       getOptLevel() != CodeGenOptLevel::None &&
diff --git a/llvm/include/llvm/Passes/MachinePassRegistry.def 
b/llvm/include/llvm/Passes/MachinePassRegistry.def
index d272105f10259..fe4c181eebb0e 100644
--- a/llvm/include/llvm/Passes/MachinePassRegistry.def
+++ b/llvm/include/llvm/Passes/MachinePassRegistry.def
@@ -150,6 +150,7 @@ MACHINE_FUNCTION_PASS("localstackalloc", 
LocalStackSlotAllocationPass())
 MACHINE_FUNCTION_PASS("machine-cp", MachineCopyPropagationPass())
 MACHINE_FUNCTION_PASS("machine-cse", MachineCSEPass())
 MACHINE_FUNCTION_PASS("machine-latecleanup", MachineLateInstrsCleanupPass())
+MACHINE_FUNCTION_PASS("machine-sanmd", MachineSanitizerBinaryMetadataPass())
 MACHINE_FUNCTION_PASS("machine-scheduler", MachineSchedulerPass(TM))
 MACHINE_FUNCTION_PASS("machinelicm", MachineLICMPass())
 MACHINE_FUNCTION_PASS("no-op-machine-function", NoOpMachineFunctionPass())
@@ -279,7 +280,6 @@ DUMMY_MACHINE_FUNCTION_PASS("lrshrink", LiveRangeShrinkPass)
 DUMMY_MACHINE_FUNCTION_PASS("machine-combiner", MachineCombinerPass)
 DUMMY_MACHINE_FUNCTION_PASS("static-data-splitter", StaticDataSplitter)
 DUMMY_MACHINE_FUNCTION_PASS("machine-function-splitter", 
MachineFunctionSplitterPass)
-DUMMY_MACHINE_FUNCTION_PASS("machine-sanmd", MachineSanitizerBinaryMetadata)
 DUMMY_MACHINE_FUNCTION_PASS("machine-uniformity", 
MachineUniformityInfoWrapperPass)
 DUMMY_MACHINE_FUNCTION_PASS("machineinstr-printer", MachineFunctionPrinterPass)
 DUMMY_MACHINE_FUNCTION_PASS("mirfs-discriminators", MIRAddFSDiscriminatorsPass)
diff --git a/llvm/lib/CodeGen/CodeGen.cpp b/llvm/lib/CodeGen/CodeGen.cpp
index 48d8a54fcaa33..4d6b7dd0317d1 100644
--- a/llvm/lib/CodeGen/CodeGen.cpp
+++ b/llvm/lib/CodeGen/CodeGen.cpp
@@ -90,7 +90,7 @@ void llvm::initializeCodeGen(PassRegistry &Registry) {
   initializeMachineOptimizationRemarkEmitterPassPass(Registry);
   initializeMachineOutlinerPass(Registry);
   initializeMachinePipelinerPass(Registry);
-  initializeMachineSanitizerBinaryMetadataPass(Registry);
+  initializeMachineSanitizerBinaryMetadataLegacyPass(Registry);
   initializeModuloScheduleTestPass(Registry);
   initializeMachinePostDominatorTreeWrapperPassPass(Registry);
   initializeMachineRegionInfoPassPass(Registry);
diff --git a/llvm/lib/CodeGen/SanitizerBinaryMetadata.cpp 
b/llvm/lib/CodeGen/SanitizerBinaryMetadata.cpp
index 9002a70768401..125b4c7a4d993 100644
--- a/llvm/lib/CodeGen/SanitizerBinaryMetadata.cpp
+++ b/llvm/lib/CodeGen/SanitizerBinaryMetadata.cpp
@@ -11,7 +11,7 @@
 //
 
//===----------------------------------------------------------------------===//
 
-#include "llvm/Transforms/Instrumentation/SanitizerBinaryMetadata.h"
+#include "llvm/CodeGen/SanitizerBinaryMetadata.h"
 #include "llvm/CodeGen/MachineFrameInfo.h"
 #include "llvm/CodeGen/MachineFunction.h"
 #include "llvm/CodeGen/MachineFunctionPass.h"
@@ -20,34 +20,53 @@
 #include "llvm/IR/MDBuilder.h"
 #include "llvm/InitializePasses.h"
 #include "llvm/Pass.h"
+#include "llvm/Transforms/Instrumentation/SanitizerBinaryMetadata.h"
 #include <algorithm>
 
 using namespace llvm;
 
 namespace {
-class MachineSanitizerBinaryMetadata : public MachineFunctionPass {
+class MachineSanitizerBinaryMetadataLegacy : public MachineFunctionPass {
 public:
   static char ID;
 
-  MachineSanitizerBinaryMetadata();
+  MachineSanitizerBinaryMetadataLegacy();
   bool runOnMachineFunction(MachineFunction &F) override;
 };
+
+struct MachineSanitizerBinaryMetadata {
+  bool run(MachineFunction &MF);
+};
+
 } // namespace
 
-INITIALIZE_PASS(MachineSanitizerBinaryMetadata, "machine-sanmd",
+INITIALIZE_PASS(MachineSanitizerBinaryMetadataLegacy, "machine-sanmd",
                 "Machine Sanitizer Binary Metadata", false, false)
 
-char MachineSanitizerBinaryMetadata::ID = 0;
+char MachineSanitizerBinaryMetadataLegacy::ID = 0;
 char &llvm::MachineSanitizerBinaryMetadataID =
-    MachineSanitizerBinaryMetadata::ID;
+    MachineSanitizerBinaryMetadataLegacy::ID;
 
-MachineSanitizerBinaryMetadata::MachineSanitizerBinaryMetadata()
+MachineSanitizerBinaryMetadataLegacy::MachineSanitizerBinaryMetadataLegacy()
     : MachineFunctionPass(ID) {
-  initializeMachineSanitizerBinaryMetadataPass(
+  initializeMachineSanitizerBinaryMetadataLegacyPass(
       *PassRegistry::getPassRegistry());
 }
 
-bool MachineSanitizerBinaryMetadata::runOnMachineFunction(MachineFunction &MF) 
{
+bool MachineSanitizerBinaryMetadataLegacy::runOnMachineFunction(
+    MachineFunction &MF) {
+  return MachineSanitizerBinaryMetadata().run(MF);
+}
+
+PreservedAnalyses
+MachineSanitizerBinaryMetadataPass::run(MachineFunction &MF,
+                                        MachineFunctionAnalysisManager &MFAM) {
+  if (!MachineSanitizerBinaryMetadata().run(MF))
+    return PreservedAnalyses::all();
+  return getMachineFunctionPassPreservedAnalyses();
+}
+
+bool MachineSanitizerBinaryMetadata::run(MachineFunction &MF) {
   MDNode *MD = MF.getFunction().getMetadata(LLVMContext::MD_pcsections);
   if (!MD)
     return false;
diff --git a/llvm/lib/Passes/PassBuilder.cpp b/llvm/lib/Passes/PassBuilder.cpp
index ca85911e22ac4..3a1440544d15b 100644
--- a/llvm/lib/Passes/PassBuilder.cpp
+++ b/llvm/lib/Passes/PassBuilder.cpp
@@ -149,6 +149,7 @@
 #include "llvm/CodeGen/RemoveRedundantDebugValues.h"
 #include "llvm/CodeGen/RenameIndependentSubregs.h"
 #include "llvm/CodeGen/SafeStack.h"
+#include "llvm/CodeGen/SanitizerBinaryMetadata.h"
 #include "llvm/CodeGen/SelectOptimize.h"
 #include "llvm/CodeGen/ShadowStackGCLowering.h"
 #include "llvm/CodeGen/SjLjEHPrepare.h"
diff --git a/llvm/test/tools/llc/new-pm/pipeline.ll 
b/llvm/test/tools/llc/new-pm/pipeline.ll
index d1a50642ea311..c1ed0203f83a4 100644
--- a/llvm/test/tools/llc/new-pm/pipeline.ll
+++ b/llvm/test/tools/llc/new-pm/pipeline.ll
@@ -1,5 +1,5 @@
 ; RUN: llc -mtriple=x86_64-pc-linux-gnu -enable-new-pm -print-pipeline-passes 
-filetype=null %s | FileCheck %s
 
 ; CHECK: require<profile-summary>,require<collector-metadata>
-; CHECK: MachineSanitizerBinaryMetadata
+; CHECK: machine-sanmd
 

>From 17c20b1c1d8207f3b85e5a471961cc121be83c15 Mon Sep 17 00:00:00 2001
From: Akshat Oke <akshat....@amd.com>
Date: Tue, 11 Mar 2025 09:51:49 +0000
Subject: [PATCH 2/2] AS, add FIXME

---
 llvm/lib/CodeGen/SanitizerBinaryMetadata.cpp | 3 +++
 1 file changed, 3 insertions(+)

diff --git a/llvm/lib/CodeGen/SanitizerBinaryMetadata.cpp 
b/llvm/lib/CodeGen/SanitizerBinaryMetadata.cpp
index 125b4c7a4d993..5cd35cc79d8a1 100644
--- a/llvm/lib/CodeGen/SanitizerBinaryMetadata.cpp
+++ b/llvm/lib/CodeGen/SanitizerBinaryMetadata.cpp
@@ -26,6 +26,8 @@
 using namespace llvm;
 
 namespace {
+// FIXME: This pass modifies Function metadata, which is not to be done in
+// MachineFunctionPass. It should probably be moved to a FunctionPass.
 class MachineSanitizerBinaryMetadataLegacy : public MachineFunctionPass {
 public:
   static char ID;
@@ -63,6 +65,7 @@ MachineSanitizerBinaryMetadataPass::run(MachineFunction &MF,
                                         MachineFunctionAnalysisManager &MFAM) {
   if (!MachineSanitizerBinaryMetadata().run(MF))
     return PreservedAnalyses::all();
+
   return getMachineFunctionPassPreservedAnalyses();
 }
 

_______________________________________________
llvm-branch-commits mailing list
llvm-branch-commits@lists.llvm.org
https://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-branch-commits

Reply via email to