diff options
Diffstat (limited to 'llvm/lib')
| -rw-r--r-- | llvm/lib/Passes/PassBuilder.cpp | 1 | ||||
| -rw-r--r-- | llvm/lib/Passes/PassRegistry.def | 1 | ||||
| -rw-r--r-- | llvm/lib/Transforms/Utils/NameAnonFunctions.cpp | 26 | ||||
| -rw-r--r-- | llvm/lib/Transforms/Utils/Utils.cpp | 2 |
4 files changed, 22 insertions, 8 deletions
diff --git a/llvm/lib/Passes/PassBuilder.cpp b/llvm/lib/Passes/PassBuilder.cpp index 32aa87bde3c..cf0978f1086 100644 --- a/llvm/lib/Passes/PassBuilder.cpp +++ b/llvm/lib/Passes/PassBuilder.cpp @@ -121,6 +121,7 @@ #include "llvm/Transforms/Utils/LoopSimplify.h" #include "llvm/Transforms/Utils/Mem2Reg.h" #include "llvm/Transforms/Utils/MemorySSA.h" +#include "llvm/Transforms/Utils/NameAnonFunctions.h" #include "llvm/Transforms/Utils/SimplifyInstructions.h" #include "llvm/Transforms/Utils/SymbolRewriter.h" #include "llvm/Transforms/Vectorize/LoopVectorize.h" diff --git a/llvm/lib/Passes/PassRegistry.def b/llvm/lib/Passes/PassRegistry.def index 2e897b37088..7f9953cd85b 100644 --- a/llvm/lib/Passes/PassRegistry.def +++ b/llvm/lib/Passes/PassRegistry.def @@ -53,6 +53,7 @@ MODULE_PASS("internalize", InternalizePass()) MODULE_PASS("invalidate<all>", InvalidateAllAnalysesPass()) MODULE_PASS("ipsccp", IPSCCPPass()) MODULE_PASS("lowertypetests", LowerTypeTestsPass()) +MODULE_PASS("name-anon-functions", NameAnonFunctionPass()) MODULE_PASS("no-op-module", NoOpModulePass()) MODULE_PASS("partial-inliner", PartialInlinerPass()) MODULE_PASS("pgo-icall-prom", PGOIndirectCallPromotion()) diff --git a/llvm/lib/Transforms/Utils/NameAnonFunctions.cpp b/llvm/lib/Transforms/Utils/NameAnonFunctions.cpp index 6629ab85510..6dc3520b61a 100644 --- a/llvm/lib/Transforms/Utils/NameAnonFunctions.cpp +++ b/llvm/lib/Transforms/Utils/NameAnonFunctions.cpp @@ -12,6 +12,8 @@ // //===----------------------------------------------------------------------===// +#include "llvm/Transforms/Utils/NameAnonFunctions.h" + #include "llvm/ADT/SmallString.h" #include "llvm/IR/Module.h" #include "llvm/Support/MD5.h" @@ -76,8 +78,8 @@ bool llvm::nameUnamedFunctions(Module &M) { namespace { -// Simple pass that provides a name to every anon function. -class NameAnonFunction : public ModulePass { +// Legacy pass that provides a name to every anon function. +class NameAnonFunctionLegacyPass : public ModulePass { public: /// Pass identification, replacement for typeid @@ -86,19 +88,29 @@ public: /// Specify pass name for debug output const char *getPassName() const override { return "Name Anon Functions"; } - explicit NameAnonFunction() : ModulePass(ID) {} + explicit NameAnonFunctionLegacyPass() : ModulePass(ID) {} bool runOnModule(Module &M) override { return nameUnamedFunctions(M); } }; -char NameAnonFunction::ID = 0; +char NameAnonFunctionLegacyPass::ID = 0; } // anonymous namespace -INITIALIZE_PASS_BEGIN(NameAnonFunction, "name-anon-functions", +PreservedAnalyses NameAnonFunctionPass::run(Module &M, + ModuleAnalysisManager &AM) { + if (!nameUnamedFunctions(M)) + return PreservedAnalyses::all(); + + return PreservedAnalyses::none(); +} + +INITIALIZE_PASS_BEGIN(NameAnonFunctionLegacyPass, "name-anon-functions", "Provide a name to nameless functions", false, false) -INITIALIZE_PASS_END(NameAnonFunction, "name-anon-functions", +INITIALIZE_PASS_END(NameAnonFunctionLegacyPass, "name-anon-functions", "Provide a name to nameless functions", false, false) namespace llvm { -ModulePass *createNameAnonFunctionPass() { return new NameAnonFunction(); } +ModulePass *createNameAnonFunctionPass() { + return new NameAnonFunctionLegacyPass(); +} } diff --git a/llvm/lib/Transforms/Utils/Utils.cpp b/llvm/lib/Transforms/Utils/Utils.cpp index 8f85f19efe3..92b72453918 100644 --- a/llvm/lib/Transforms/Utils/Utils.cpp +++ b/llvm/lib/Transforms/Utils/Utils.cpp @@ -28,7 +28,7 @@ void llvm::initializeTransformUtils(PassRegistry &Registry) { initializeLoopSimplifyPass(Registry); initializeLowerInvokePass(Registry); initializeLowerSwitchPass(Registry); - initializeNameAnonFunctionPass(Registry); + initializeNameAnonFunctionLegacyPassPass(Registry); initializePromoteLegacyPassPass(Registry); initializeUnifyFunctionExitNodesPass(Registry); initializeInstSimplifierPass(Registry); |

