[llvm] r271062 - [PM] Port the Sample FDO to new PM (part-1)
Davide Italiano via llvm-commits
llvm-commits at lists.llvm.org
Fri May 27 15:54:01 PDT 2016
On Fri, May 27, 2016 at 3:30 PM, Xinliang David Li via llvm-commits
<llvm-commits at lists.llvm.org> wrote:
> Author: davidxl
> Date: Fri May 27 17:30:44 2016
> New Revision: 271062
>
> URL: http://llvm.org/viewvc/llvm-project?rev=271062&view=rev
> Log:
> [PM] Port the Sample FDO to new PM (part-1)
>
> Modified:
> llvm/trunk/include/llvm/InitializePasses.h
> llvm/trunk/lib/Transforms/IPO/IPO.cpp
> llvm/trunk/lib/Transforms/IPO/SampleProfile.cpp
>
> Modified: llvm/trunk/include/llvm/InitializePasses.h
> URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/include/llvm/InitializePasses.h?rev=271062&r1=271061&r2=271062&view=diff
> ==============================================================================
> --- llvm/trunk/include/llvm/InitializePasses.h (original)
> +++ llvm/trunk/include/llvm/InitializePasses.h Fri May 27 17:30:44 2016
> @@ -70,7 +70,7 @@ void initializeAliasSetPrinterPass(PassR
> void initializeAlwaysInlinerPass(PassRegistry&);
> void initializeArgPromotionPass(PassRegistry&);
> void initializeAtomicExpandPass(PassRegistry&);
> -void initializeSampleProfileLoaderPass(PassRegistry&);
> +void initializeSampleProfileLoaderLegacyPassPass(PassRegistry&);
> void initializeAlignmentFromAssumptionsPass(PassRegistry&);
> void initializeBarrierNoopPass(PassRegistry&);
> void initializeBasicAAWrapperPassPass(PassRegistry&);
>
> Modified: llvm/trunk/lib/Transforms/IPO/IPO.cpp
> URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/Transforms/IPO/IPO.cpp?rev=271062&r1=271061&r2=271062&view=diff
> ==============================================================================
> --- llvm/trunk/lib/Transforms/IPO/IPO.cpp (original)
> +++ llvm/trunk/lib/Transforms/IPO/IPO.cpp Fri May 27 17:30:44 2016
> @@ -52,7 +52,7 @@ void llvm::initializeIPO(PassRegistry &R
> initializeStripNonDebugSymbolsPass(Registry);
> initializeBarrierNoopPass(Registry);
> initializeEliminateAvailableExternallyLegacyPassPass(Registry);
> - initializeSampleProfileLoaderPass(Registry);
> + initializeSampleProfileLoaderLegacyPassPass(Registry);
> initializeFunctionImportPassPass(Registry);
> initializeWholeProgramDevirtPass(Registry);
> }
>
> Modified: llvm/trunk/lib/Transforms/IPO/SampleProfile.cpp
> URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/Transforms/IPO/SampleProfile.cpp?rev=271062&r1=271061&r2=271062&view=diff
> ==============================================================================
> --- llvm/trunk/lib/Transforms/IPO/SampleProfile.cpp (original)
> +++ llvm/trunk/lib/Transforms/IPO/SampleProfile.cpp Fri May 27 17:30:44 2016
> @@ -101,26 +101,17 @@ typedef DenseMap<const BasicBlock *, Sma
> /// This pass reads profile data from the file specified by
> /// -sample-profile-file and annotates every affected function with the
> /// profile information found in that file.
> -class SampleProfileLoader : public ModulePass {
> +class SampleProfileLoader {
> public:
> - // Class identification, replacement for typeinfo
> - static char ID;
> -
> SampleProfileLoader(StringRef Name = SampleProfileFile)
> - : ModulePass(ID), DT(nullptr), PDT(nullptr), LI(nullptr), Reader(),
> - Samples(nullptr), Filename(Name), ProfileIsValid(false),
> - TotalCollectedSamples(0) {
> - initializeSampleProfileLoaderPass(*PassRegistry::getPassRegistry());
> - }
> + : DT(nullptr), PDT(nullptr), LI(nullptr), Reader(), Samples(nullptr),
> + Filename(Name), ProfileIsValid(false), TotalCollectedSamples(0) {}
>
> - bool doInitialization(Module &M) override;
> + bool doInitialization(Module &M);
> + bool runOnModule(Module &M);
>
> void dump() { Reader->dump(); }
>
> - const char *getPassName() const override { return "Sample profile pass"; }
> -
> - bool runOnModule(Module &M) override;
> -
> protected:
> bool runOnFunction(Function &F);
> unsigned getFunctionLoc(Function &F);
> @@ -202,6 +193,29 @@ protected:
> uint64_t TotalCollectedSamples;
> };
>
> +class SampleProfileLoaderLegacyPass : public ModulePass {
> +public:
> + // Class identification, replacement for typeinfo
> + static char ID;
> +
> + SampleProfileLoaderLegacyPass(StringRef Name = SampleProfileFile)
> + : ModulePass(ID), SampleLoader(Name) {
> + initializeSampleProfileLoaderLegacyPassPass(
> + *PassRegistry::getPassRegistry());
> + }
> +
> + void dump() { SampleLoader.dump(); }
> +
> + bool doInitialization(Module &M) override {
> + return SampleLoader.doInitialization(M);
> + }
> + const char *getPassName() const override { return "Sample profile pass"; }
> + bool runOnModule(Module &M) override;
> +
> +private:
> + SampleProfileLoader SampleLoader;
> +};
> +
> class SampleCoverageTracker {
> public:
> SampleCoverageTracker() : SampleCoverage(), TotalUsedSamples(0) {}
> @@ -1210,10 +1224,10 @@ bool SampleProfileLoader::emitAnnotation
> return Changed;
> }
>
> -char SampleProfileLoader::ID = 0;
> -INITIALIZE_PASS_BEGIN(SampleProfileLoader, "sample-profile",
> +char SampleProfileLoaderLegacyPass::ID = 0;
> +INITIALIZE_PASS_BEGIN(SampleProfileLoaderLegacyPass, "sample-profile",
> "Sample Profile loader", false, false)
> -INITIALIZE_PASS_END(SampleProfileLoader, "sample-profile",
> +INITIALIZE_PASS_END(SampleProfileLoaderLegacyPass, "sample-profile",
> "Sample Profile loader", false, false)
>
As this pass has no more dependencies, the code above can simply just
be INITIALIZE_PASS.
Cheers,
--
Davide
More information about the llvm-commits
mailing list