[llvm] r271822 - [PM] code refactoring /NFC
Chandler Carruth via llvm-commits
llvm-commits at lists.llvm.org
Sat Jun 4 21:40:05 PDT 2016
On Sat, Jun 4, 2016 at 8:46 PM Xinliang David Li via llvm-commits <
llvm-commits at lists.llvm.org> wrote:
> Author: davidxl
> Date: Sat Jun 4 22:40:03 2016
> New Revision: 271822
>
> URL: http://llvm.org/viewvc/llvm-project?rev=271822&view=rev
> Log:
> [PM] code refactoring /NFC
>
Please write somewhat more detailed commit messages? For example, what
refactoring? To what end? That makes it much easier to do code review.
>
> Modified:
> llvm/trunk/include/llvm/InitializePasses.h
> llvm/trunk/lib/Transforms/Instrumentation/GCOVProfiling.cpp
> llvm/trunk/lib/Transforms/Instrumentation/Instrumentation.cpp
>
> Modified: llvm/trunk/include/llvm/InitializePasses.h
> URL:
> http://llvm.org/viewvc/llvm-project/llvm/trunk/include/llvm/InitializePasses.h?rev=271822&r1=271821&r2=271822&view=diff
>
> ==============================================================================
> --- llvm/trunk/include/llvm/InitializePasses.h (original)
> +++ llvm/trunk/include/llvm/InitializePasses.h Sat Jun 4 22:40:03 2016
> @@ -123,7 +123,7 @@ void initializeEarlyIfConverterPass(Pass
> void initializeEdgeBundlesPass(PassRegistry&);
> void initializeExpandPostRAPass(PassRegistry&);
> void initializeAAResultsWrapperPassPass(PassRegistry &);
> -void initializeGCOVProfilerPass(PassRegistry&);
> +void initializeGCOVProfilerLegacyPassPass(PassRegistry&);
> void initializePGOInstrumentationGenLegacyPassPass(PassRegistry&);
> void initializePGOInstrumentationUseLegacyPassPass(PassRegistry&);
> void initializePGOIndirectCallPromotionLegacyPassPass(PassRegistry&);
>
> Modified: llvm/trunk/lib/Transforms/Instrumentation/GCOVProfiling.cpp
> URL:
> http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/Transforms/Instrumentation/GCOVProfiling.cpp?rev=271822&r1=271821&r2=271822&view=diff
>
> ==============================================================================
> --- llvm/trunk/lib/Transforms/Instrumentation/GCOVProfiling.cpp (original)
> +++ llvm/trunk/lib/Transforms/Instrumentation/GCOVProfiling.cpp Sat Jun 4
> 22:40:03 2016
> @@ -68,85 +68,95 @@ GCOVOptions GCOVOptions::getDefault() {
> }
>
> namespace {
> - class GCOVFunction;
> +class GCOVFunction;
>
> - class GCOVProfiler : public ModulePass {
> - public:
> - static char ID;
> - GCOVProfiler() : GCOVProfiler(GCOVOptions::getDefault()) {}
> - GCOVProfiler(const GCOVOptions &Opts) : ModulePass(ID), Options(Opts)
> {
> - assert((Options.EmitNotes || Options.EmitData) &&
> - "GCOVProfiler asked to do nothing?");
> - ReversedVersion[0] = Options.Version[3];
> - ReversedVersion[1] = Options.Version[2];
> - ReversedVersion[2] = Options.Version[1];
> - ReversedVersion[3] = Options.Version[0];
> - ReversedVersion[4] = '\0';
> - initializeGCOVProfilerPass(*PassRegistry::getPassRegistry());
> - }
> - const char *getPassName() const override {
> - return "GCOV Profiler";
> - }
> -
> - private:
> - bool runOnModule(Module &M) override;
> -
> - // Create the .gcno files for the Module based on DebugInfo.
> - void emitProfileNotes();
> -
> - // Modify the program to track transitions along edges and call into
> the
> - // profiling runtime to emit .gcda files when run.
> - bool emitProfileArcs();
> -
> - // Get pointers to the functions in the runtime library.
> - Constant *getStartFileFunc();
> - Constant *getIncrementIndirectCounterFunc();
> - Constant *getEmitFunctionFunc();
> - Constant *getEmitArcsFunc();
> - Constant *getSummaryInfoFunc();
> - Constant *getDeleteWriteoutFunctionListFunc();
> - Constant *getDeleteFlushFunctionListFunc();
> - Constant *getEndFileFunc();
> -
> - // Create or retrieve an i32 state value that is used to represent the
> - // pred block number for certain non-trivial edges.
> - GlobalVariable *getEdgeStateValue();
> -
> - // Produce a table of pointers to counters, by predecessor and
> successor
> - // block number.
> - GlobalVariable *buildEdgeLookupTable(Function *F,
> - GlobalVariable *Counter,
> - const UniqueVector<BasicBlock
> *>&Preds,
> - const
> UniqueVector<BasicBlock*>&Succs);
> -
> - // Add the function to write out all our counters to the global
> destructor
> - // list.
> - Function *insertCounterWriteout(ArrayRef<std::pair<GlobalVariable*,
> - MDNode*> >);
> - Function *insertFlush(ArrayRef<std::pair<GlobalVariable*, MDNode*> >);
> - void insertIndirectCounterIncrement();
> -
> - std::string mangleName(const DICompileUnit *CU, const char *NewStem);
> -
> - GCOVOptions Options;
> -
> - // Reversed, NUL-terminated copy of Options.Version.
> - char ReversedVersion[5];
> - // Checksum, produced by hash of EdgeDestinations
> - SmallVector<uint32_t, 4> FileChecksums;
> -
> - Module *M;
> - LLVMContext *Ctx;
> - SmallVector<std::unique_ptr<GCOVFunction>, 16> Funcs;
> - };
> +class GCOVProfiler {
> +public:
> + GCOVProfiler() : GCOVProfiler(GCOVOptions::getDefault()) {}
> + GCOVProfiler(const GCOVOptions &Opts) : Options(Opts) {
> + assert((Options.EmitNotes || Options.EmitData) &&
> + "GCOVProfiler asked to do nothing?");
> + ReversedVersion[0] = Options.Version[3];
> + ReversedVersion[1] = Options.Version[2];
> + ReversedVersion[2] = Options.Version[1];
> + ReversedVersion[3] = Options.Version[0];
> + ReversedVersion[4] = '\0';
> + }
> + bool runOnModule(Module &M);
> +
> +private:
> + // Create the .gcno files for the Module based on DebugInfo.
> + void emitProfileNotes();
> +
> + // Modify the program to track transitions along edges and call into the
> + // profiling runtime to emit .gcda files when run.
> + bool emitProfileArcs();
> +
> + // Get pointers to the functions in the runtime library.
> + Constant *getStartFileFunc();
> + Constant *getIncrementIndirectCounterFunc();
> + Constant *getEmitFunctionFunc();
> + Constant *getEmitArcsFunc();
> + Constant *getSummaryInfoFunc();
> + Constant *getDeleteWriteoutFunctionListFunc();
> + Constant *getDeleteFlushFunctionListFunc();
> + Constant *getEndFileFunc();
> +
> + // Create or retrieve an i32 state value that is used to represent the
> + // pred block number for certain non-trivial edges.
> + GlobalVariable *getEdgeStateValue();
> +
> + // Produce a table of pointers to counters, by predecessor and successor
> + // block number.
> + GlobalVariable *buildEdgeLookupTable(Function *F, GlobalVariable
> *Counter,
> + const UniqueVector<BasicBlock *>
> &Preds,
> + const UniqueVector<BasicBlock *>
> &Succs);
> +
> + // Add the function to write out all our counters to the global
> destructor
> + // list.
> + Function *
> + insertCounterWriteout(ArrayRef<std::pair<GlobalVariable *, MDNode *>>);
> + Function *insertFlush(ArrayRef<std::pair<GlobalVariable *, MDNode *>>);
> + void insertIndirectCounterIncrement();
> +
> + std::string mangleName(const DICompileUnit *CU, const char *NewStem);
> +
> + GCOVOptions Options;
> +
> + // Reversed, NUL-terminated copy of Options.Version.
> + char ReversedVersion[5];
> + // Checksum, produced by hash of EdgeDestinations
> + SmallVector<uint32_t, 4> FileChecksums;
> +
> + Module *M;
> + LLVMContext *Ctx;
> + SmallVector<std::unique_ptr<GCOVFunction>, 16> Funcs;
> +};
> +
> +class GCOVProfilerLegacyPass : public ModulePass {
> +public:
> + static char ID;
> + GCOVProfilerLegacyPass()
> + : GCOVProfilerLegacyPass(GCOVOptions::getDefault()) {}
> + GCOVProfilerLegacyPass(const GCOVOptions &Opts)
> + : ModulePass(ID), Profiler(Opts) {
> +
> initializeGCOVProfilerLegacyPassPass(*PassRegistry::getPassRegistry());
> + }
> + const char *getPassName() const override { return "GCOV Profiler"; }
> +
> + bool runOnModule(Module &M) override { return Profiler.runOnModule(M); }
> +
> +private:
> + GCOVProfiler Profiler;
> +};
> }
>
> -char GCOVProfiler::ID = 0;
> -INITIALIZE_PASS(GCOVProfiler, "insert-gcov-profiling",
> +char GCOVProfilerLegacyPass::ID = 0;
> +INITIALIZE_PASS(GCOVProfilerLegacyPass, "insert-gcov-profiling",
> "Insert instrumentation for GCOV profiling", false, false)
>
> ModulePass *llvm::createGCOVProfilerPass(const GCOVOptions &Options) {
> - return new GCOVProfiler(Options);
> + return new GCOVProfilerLegacyPass(Options);
> }
>
> static StringRef getFunctionName(const DISubprogram *SP) {
>
> Modified: llvm/trunk/lib/Transforms/Instrumentation/Instrumentation.cpp
> URL:
> http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/Transforms/Instrumentation/Instrumentation.cpp?rev=271822&r1=271821&r2=271822&view=diff
>
> ==============================================================================
> --- llvm/trunk/lib/Transforms/Instrumentation/Instrumentation.cpp
> (original)
> +++ llvm/trunk/lib/Transforms/Instrumentation/Instrumentation.cpp Sat Jun
> 4 22:40:03 2016
> @@ -59,7 +59,7 @@ void llvm::initializeInstrumentation(Pas
> initializeAddressSanitizerPass(Registry);
> initializeAddressSanitizerModulePass(Registry);
> initializeBoundsCheckingPass(Registry);
> - initializeGCOVProfilerPass(Registry);
> + initializeGCOVProfilerLegacyPassPass(Registry);
> initializePGOInstrumentationGenLegacyPassPass(Registry);
> initializePGOInstrumentationUseLegacyPassPass(Registry);
> initializePGOIndirectCallPromotionLegacyPassPass(Registry);
>
>
> _______________________________________________
> llvm-commits mailing list
> llvm-commits at lists.llvm.org
> http://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-commits
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.llvm.org/pipermail/llvm-commits/attachments/20160605/2ce1f0e5/attachment.html>
More information about the llvm-commits
mailing list