https://github.com/optimisan updated https://github.com/llvm/llvm-project/pull/129857
>From 4b18d66c696656f0f04dff15028904f9b4c17901 Mon Sep 17 00:00:00 2001 From: Akshat Oke <akshat....@amd.com> Date: Wed, 5 Mar 2025 09:19:08 +0000 Subject: [PATCH] [CodeGen][NPM] Port FEntryInserter to NPM --- llvm/include/llvm/CodeGen/FEntryInserter.h | 25 ++++++++++++++ llvm/include/llvm/InitializePasses.h | 2 +- llvm/include/llvm/Passes/CodeGenPassBuilder.h | 1 + .../llvm/Passes/MachinePassRegistry.def | 2 +- llvm/lib/CodeGen/CodeGen.cpp | 2 +- llvm/lib/CodeGen/FEntryInserter.cpp | 33 ++++++++++++++----- llvm/lib/Passes/PassBuilder.cpp | 1 + 7 files changed, 54 insertions(+), 12 deletions(-) create mode 100644 llvm/include/llvm/CodeGen/FEntryInserter.h diff --git a/llvm/include/llvm/CodeGen/FEntryInserter.h b/llvm/include/llvm/CodeGen/FEntryInserter.h new file mode 100644 index 0000000000000..4a82975cad879 --- /dev/null +++ b/llvm/include/llvm/CodeGen/FEntryInserter.h @@ -0,0 +1,25 @@ +//===- llvm/CodeGen/FEntryInserter.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_FENTRYINSERTER_H +#define LLVM_CODEGEN_FENTRYINSERTER_H + +#include "llvm/CodeGen/MachinePassManager.h" + +namespace llvm { + +class FEntryInserterPass : public PassInfoMixin<FEntryInserterPass> { +public: + PreservedAnalyses run(MachineFunction &MF, + MachineFunctionAnalysisManager &MFAM); + static bool isRequired() { return true; } +}; + +} // namespace llvm + +#endif // LLVM_CODEGEN_FENTRYINSERTER_H diff --git a/llvm/include/llvm/InitializePasses.h b/llvm/include/llvm/InitializePasses.h index 5f8e55d783161..63917b2b7f729 100644 --- a/llvm/include/llvm/InitializePasses.h +++ b/llvm/include/llvm/InitializePasses.h @@ -112,7 +112,7 @@ void initializeExpandPostRALegacyPass(PassRegistry &); void initializeExpandReductionsPass(PassRegistry &); void initializeExpandVariadicsPass(PassRegistry &); void initializeExternalAAWrapperPassPass(PassRegistry &); -void initializeFEntryInserterPass(PassRegistry &); +void initializeFEntryInserterLegacyPass(PassRegistry &); void initializeFinalizeISelPass(PassRegistry &); void initializeFinalizeMachineBundlesPass(PassRegistry &); void initializeFixIrreduciblePass(PassRegistry &); diff --git a/llvm/include/llvm/Passes/CodeGenPassBuilder.h b/llvm/include/llvm/Passes/CodeGenPassBuilder.h index 4db489d804013..bab475d740467 100644 --- a/llvm/include/llvm/Passes/CodeGenPassBuilder.h +++ b/llvm/include/llvm/Passes/CodeGenPassBuilder.h @@ -33,6 +33,7 @@ #include "llvm/CodeGen/ExpandMemCmp.h" #include "llvm/CodeGen/ExpandPostRAPseudos.h" #include "llvm/CodeGen/ExpandReductions.h" +#include "llvm/CodeGen/FEntryInserter.h" #include "llvm/CodeGen/FinalizeISel.h" #include "llvm/CodeGen/GCMetadata.h" #include "llvm/CodeGen/GlobalMerge.h" diff --git a/llvm/include/llvm/Passes/MachinePassRegistry.def b/llvm/include/llvm/Passes/MachinePassRegistry.def index d032087fa7073..667a7352930ea 100644 --- a/llvm/include/llvm/Passes/MachinePassRegistry.def +++ b/llvm/include/llvm/Passes/MachinePassRegistry.def @@ -142,6 +142,7 @@ MACHINE_FUNCTION_PASS("dead-mi-elimination", DeadMachineInstructionElimPass()) MACHINE_FUNCTION_PASS("early-ifcvt", EarlyIfConverterPass()) MACHINE_FUNCTION_PASS("early-machinelicm", EarlyMachineLICMPass()) MACHINE_FUNCTION_PASS("early-tailduplication", EarlyTailDuplicatePass()) +MACHINE_FUNCTION_PASS("fentry-insert", FEntryInserterPass()) MACHINE_FUNCTION_PASS("finalize-isel", FinalizeISelPass()) MACHINE_FUNCTION_PASS("localstackalloc", LocalStackSlotAllocationPass()) MACHINE_FUNCTION_PASS("machine-cp", MachineCopyPropagationPass()) @@ -258,7 +259,6 @@ DUMMY_MACHINE_FUNCTION_PASS("cfi-fixup", CFIFixupPass) DUMMY_MACHINE_FUNCTION_PASS("cfi-instr-inserter", CFIInstrInserterPass) DUMMY_MACHINE_FUNCTION_PASS("detect-dead-lanes", DetectDeadLanesPass) DUMMY_MACHINE_FUNCTION_PASS("dot-machine-cfg", MachineCFGPrinter) -DUMMY_MACHINE_FUNCTION_PASS("fentry-insert", FEntryInserterPass) DUMMY_MACHINE_FUNCTION_PASS("fixup-statepoint-caller-saved", FixupStatepointCallerSavedPass) DUMMY_MACHINE_FUNCTION_PASS("fs-profile-loader", MIRProfileLoaderNewPass) DUMMY_MACHINE_FUNCTION_PASS("funclet-layout", FuncletLayoutPass) diff --git a/llvm/lib/CodeGen/CodeGen.cpp b/llvm/lib/CodeGen/CodeGen.cpp index 2cc4bf14e9804..effb556e63435 100644 --- a/llvm/lib/CodeGen/CodeGen.cpp +++ b/llvm/lib/CodeGen/CodeGen.cpp @@ -43,7 +43,7 @@ void llvm::initializeCodeGen(PassRegistry &Registry) { initializeExpandLargeFpConvertLegacyPassPass(Registry); initializeExpandMemCmpLegacyPassPass(Registry); initializeExpandPostRALegacyPass(Registry); - initializeFEntryInserterPass(Registry); + initializeFEntryInserterLegacyPass(Registry); initializeFinalizeISelPass(Registry); initializeFinalizeMachineBundlesPass(Registry); initializeFixupStatepointCallerSavedPass(Registry); diff --git a/llvm/lib/CodeGen/FEntryInserter.cpp b/llvm/lib/CodeGen/FEntryInserter.cpp index 68304dd41db04..79949dac51448 100644 --- a/llvm/lib/CodeGen/FEntryInserter.cpp +++ b/llvm/lib/CodeGen/FEntryInserter.cpp @@ -10,9 +10,11 @@ // //===----------------------------------------------------------------------===// +#include "llvm/CodeGen/FEntryInserter.h" #include "llvm/CodeGen/MachineFunction.h" #include "llvm/CodeGen/MachineFunctionPass.h" #include "llvm/CodeGen/MachineInstrBuilder.h" +#include "llvm/CodeGen/MachinePassManager.h" #include "llvm/CodeGen/TargetInstrInfo.h" #include "llvm/CodeGen/TargetSubtargetInfo.h" #include "llvm/IR/Function.h" @@ -21,17 +23,30 @@ using namespace llvm; namespace { -struct FEntryInserter : public MachineFunctionPass { +struct FEntryInserter { + bool run(MachineFunction &MF); +}; + +struct FEntryInserterLegacy : public MachineFunctionPass { static char ID; // Pass identification, replacement for typeid - FEntryInserter() : MachineFunctionPass(ID) { - initializeFEntryInserterPass(*PassRegistry::getPassRegistry()); + FEntryInserterLegacy() : MachineFunctionPass(ID) { + initializeFEntryInserterLegacyPass(*PassRegistry::getPassRegistry()); } - bool runOnMachineFunction(MachineFunction &F) override; + bool runOnMachineFunction(MachineFunction &F) override { + return FEntryInserter().run(F); + } }; } -bool FEntryInserter::runOnMachineFunction(MachineFunction &MF) { +PreservedAnalyses FEntryInserterPass::run(MachineFunction &MF, + MachineFunctionAnalysisManager &AM) { + if (!FEntryInserter().run(MF)) + return PreservedAnalyses::all(); + return getMachineFunctionPassPreservedAnalyses(); +} + +bool FEntryInserter::run(MachineFunction &MF) { const std::string FEntryName = std::string( MF.getFunction().getFnAttribute("fentry-call").getValueAsString()); if (FEntryName != "true") @@ -44,7 +59,7 @@ bool FEntryInserter::runOnMachineFunction(MachineFunction &MF) { return true; } -char FEntryInserter::ID = 0; -char &llvm::FEntryInserterID = FEntryInserter::ID; -INITIALIZE_PASS(FEntryInserter, "fentry-insert", "Insert fentry calls", false, - false) +char FEntryInserterLegacy::ID = 0; +char &llvm::FEntryInserterID = FEntryInserterLegacy::ID; +INITIALIZE_PASS(FEntryInserterLegacy, "fentry-insert", "Insert fentry calls", + false, false) diff --git a/llvm/lib/Passes/PassBuilder.cpp b/llvm/lib/Passes/PassBuilder.cpp index 0d3dd52df05d8..b9fb16844f6bf 100644 --- a/llvm/lib/Passes/PassBuilder.cpp +++ b/llvm/lib/Passes/PassBuilder.cpp @@ -91,6 +91,7 @@ #include "llvm/CodeGen/ExpandLargeFpConvert.h" #include "llvm/CodeGen/ExpandMemCmp.h" #include "llvm/CodeGen/ExpandPostRAPseudos.h" +#include "llvm/CodeGen/FEntryInserter.h" #include "llvm/CodeGen/FinalizeISel.h" #include "llvm/CodeGen/GCMetadata.h" #include "llvm/CodeGen/GlobalMerge.h" _______________________________________________ llvm-branch-commits mailing list llvm-branch-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-branch-commits