summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorDehao Chen <dehao@google.com>2016-12-14 21:40:47 +0000
committerDehao Chen <dehao@google.com>2016-12-14 21:40:47 +0000
commita99e082e15422bb2666532001bca76dbe30468bf (patch)
treeabe95d80f7a590a6ed8fee290da57f5d93cf0788
parent7849eeb0359e086870633437529c7f8a6a30a952 (diff)
downloadbcm5719-llvm-a99e082e15422bb2666532001bca76dbe30468bf.tar.gz
bcm5719-llvm-a99e082e15422bb2666532001bca76dbe30468bf.zip
Create SampleProfileLoader pass in llvm instead of clang
Summary: We used to create SampleProfileLoader pass in clang. This makes LTO/ThinLTO unable to add this pass in the linker plugin. This patch moves the SampleProfileLoader pass creation from clang to llvm pass manager builder. Reviewers: tejohnson, davidxl, dnovillo Subscribers: llvm-commits, mehdi_amini Differential Revision: https://reviews.llvm.org/D27743 llvm-svn: 289714
-rw-r--r--llvm/include/llvm/Transforms/IPO/PassManagerBuilder.h2
-rw-r--r--llvm/lib/Transforms/IPO/PassManagerBuilder.cpp5
2 files changed, 7 insertions, 0 deletions
diff --git a/llvm/include/llvm/Transforms/IPO/PassManagerBuilder.h b/llvm/include/llvm/Transforms/IPO/PassManagerBuilder.h
index adc41793cbf..21f36b3b08f 100644
--- a/llvm/include/llvm/Transforms/IPO/PassManagerBuilder.h
+++ b/llvm/include/llvm/Transforms/IPO/PassManagerBuilder.h
@@ -149,6 +149,8 @@ public:
std::string PGOInstrGen;
/// Path of the profile data file.
std::string PGOInstrUse;
+ /// Path of the sample Profile data file.
+ std::string PGOSampleUse;
private:
/// ExtensionList - This is list of all of the extensions that are registered.
diff --git a/llvm/lib/Transforms/IPO/PassManagerBuilder.cpp b/llvm/lib/Transforms/IPO/PassManagerBuilder.cpp
index 5c26c665405..b0e4b113f8e 100644
--- a/llvm/lib/Transforms/IPO/PassManagerBuilder.cpp
+++ b/llvm/lib/Transforms/IPO/PassManagerBuilder.cpp
@@ -383,6 +383,11 @@ void PassManagerBuilder::addFunctionSimplificationPasses(
void PassManagerBuilder::populateModulePassManager(
legacy::PassManagerBase &MPM) {
+ if (!PGOSampleUse.empty()) {
+ MPM.add(createPruneEHPass());
+ MPM.add(createSampleProfileLoaderPass(PGOSampleUse));
+ }
+
// Allow forcing function attributes as a debugging and tuning aid.
MPM.add(createForceFunctionAttrsLegacyPass());
OpenPOWER on IntegriCloud