Index: include/llvm/InitializePasses.h =================================================================== --- include/llvm/InitializePasses.h +++ include/llvm/InitializePasses.h @@ -138,6 +138,7 @@ void initializeFloat2IntLegacyPassPass(PassRegistry&); void initializeForceFunctionAttrsLegacyPassPass(PassRegistry&); void initializeForwardControlFlowIntegrityPass(PassRegistry&); +void initializeFreeMachineFunctionPass(PassRegistry&); void initializeFuncletLayoutPass(PassRegistry&); void initializeFunctionImportLegacyPassPass(PassRegistry&); void initializeGCMachineCodeAnalysisPass(PassRegistry&); @@ -296,6 +297,7 @@ void initializePredicateInfoPrinterLegacyPassPass(PassRegistry&); void initializePrintBasicBlockPassPass(PassRegistry&); void initializePrintFunctionPassWrapperPass(PassRegistry&); +void initializePrintLoopPassWrapperPass(PassRegistry&); void initializePrintModulePassWrapperPass(PassRegistry&); void initializeProcessImplicitDefsPass(PassRegistry&); void initializeProfileSummaryInfoWrapperPassPass(PassRegistry&); Index: lib/Analysis/Analysis.cpp =================================================================== --- lib/Analysis/Analysis.cpp +++ lib/Analysis/Analysis.cpp @@ -49,6 +49,7 @@ initializePostDomPrinterPass(Registry); initializePostDomOnlyViewerPass(Registry); initializePostDomOnlyPrinterPass(Registry); + initializePrintLoopPassWrapperPass(Registry); initializeAAResultsWrapperPassPass(Registry); initializeGlobalsAAWrapperPassPass(Registry); initializeIVUsersWrapperPassPass(Registry); Index: lib/Analysis/LoopPass.cpp =================================================================== --- lib/Analysis/LoopPass.cpp +++ lib/Analysis/LoopPass.cpp @@ -20,6 +20,7 @@ #include "llvm/IR/LLVMContext.h" #include "llvm/IR/OptBisect.h" #include "llvm/IR/PassManager.h" +#include "llvm/Pass.h" #include "llvm/Support/Debug.h" #include "llvm/Support/Timer.h" #include "llvm/Support/raw_ostream.h" @@ -61,6 +62,9 @@ char PrintLoopPassWrapper::ID = 0; } +INITIALIZE_PASS(PrintLoopPassWrapper, "print-loop", + "Print loop to stderr", false, false) + //===----------------------------------------------------------------------===// // LPPassManager // Index: lib/CodeGen/CodeGen.cpp =================================================================== --- lib/CodeGen/CodeGen.cpp +++ lib/CodeGen/CodeGen.cpp @@ -34,6 +34,7 @@ initializeExpandPostRAPass(Registry); initializeFEntryInserterPass(Registry); initializeFinalizeMachineBundlesPass(Registry); + initializeFreeMachineFunctionPass(Registry); initializeFuncletLayoutPass(Registry); initializeGCMachineCodeAnalysisPass(Registry); initializeGCModuleInfoPass(Registry); Index: lib/CodeGen/MachineModuleInfo.cpp =================================================================== --- lib/CodeGen/MachineModuleInfo.cpp +++ lib/CodeGen/MachineModuleInfo.cpp @@ -320,6 +320,12 @@ } } // end namespace llvm +INITIALIZE_PASS_BEGIN(FreeMachineFunction, "freemachinefunction", + "Free the MachineFunction", false, false) +INITIALIZE_PASS_DEPENDENCY(MachineModuleInfo) +INITIALIZE_PASS_END(FreeMachineFunction, "freemachinefunction", + "Free the MachineFunction", false, false) + //===- MMI building helpers -----------------------------------------------===// void llvm::computeUsesVAFloatArgument(const CallInst &I, Index: test/CodeGen/MIR/Generic/pass-registration.mir =================================================================== --- /dev/null +++ test/CodeGen/MIR/Generic/pass-registration.mir @@ -0,0 +1,14 @@ +# RUN: llc -run-pass=print-loop -debug-pass=Arguments -o -- %s 2>&1 | FileCheck %s +# RUN: llc -run-pass=freemachinefunction -debug-pass=Arguments -o -- %s 2>&1 | FileCheck %s --check-prefix=CHECK2 + +# Check that loop-printer and freemachinefunction passes are initialized correctly with the pass-registry, +# so that it is possible to use them with -run-pass. + +# CHECK: -domtree -loops -print-loop +# CHECK2: -machinemoduleinfo -freemachinefunction + +--- +name: loop +body: | + bb.0: +... Index: tools/llc/llc.cpp =================================================================== --- tools/llc/llc.cpp +++ tools/llc/llc.cpp @@ -294,6 +294,7 @@ PassRegistry *Registry = PassRegistry::getPassRegistry(); initializeCore(*Registry); initializeCodeGen(*Registry); + initializeAnalysis(*Registry); initializeLoopStrengthReducePass(*Registry); initializeLowerIntrinsicsPass(*Registry); initializeCountingFunctionInserterPass(*Registry);