[llvm] r271822 - [PM] code refactoring /NFC

Xinliang David Li via llvm-commits llvm-commits at lists.llvm.org
Sat Jun 4 22:07:52 PDT 2016


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
>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.llvm.org/pipermail/llvm-commits/attachments/20160604/b0719cae/attachment.html>


More information about the llvm-commits mailing list