[llvm] r271822 - [PM] code refactoring /NFC
Chandler Carruth via llvm-commits
llvm-commits at lists.llvm.org
Sat Jun 4 22:08:45 PDT 2016
In the future, I'd also suggest doing clang-format first, and separately.
On Sat, Jun 4, 2016 at 10:07 PM Xinliang David Li via llvm-commits <
llvm-commits at lists.llvm.org> wrote:
> yes. The change extract the transformation into its own class (to be
> reusable) and make a new class for the legacy pass as a wrapper to the
> newly extracted one. (the larger diff is caused by clang-format).
>
> David
>
> On Sat, Jun 4, 2016 at 9:40 PM, Chandler Carruth via llvm-commits <
> llvm-commits at lists.llvm.org> wrote:
>
>> 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
>>>
>>
>> _______________________________________________
>> llvm-commits mailing list
>> llvm-commits at lists.llvm.org
>> http://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-commits
>>
>>
> _______________________________________________
> 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/86bb8ff4/attachment.html>
More information about the llvm-commits
mailing list