summaryrefslogtreecommitdiffstats
path: root/llvm/lib/Transforms/Utils
diff options
context:
space:
mode:
authorVladimir Vereschaka <vvereschaka@accesssoftek.com>2019-10-20 20:39:33 +0000
committerVladimir Vereschaka <vvereschaka@accesssoftek.com>2019-10-20 20:39:33 +0000
commit92c96c7bc0b456cbc32da97df52b1acec238be9f (patch)
tree2484a6598ff22bf44c2ee730d359f6647bbd9789 /llvm/lib/Transforms/Utils
parentb1b7a2f7b63db915fbc0e7ee5e1811b8846fbd9b (diff)
downloadbcm5719-llvm-92c96c7bc0b456cbc32da97df52b1acec238be9f.tar.gz
bcm5719-llvm-92c96c7bc0b456cbc32da97df52b1acec238be9f.zip
Reverted r375254 as it has broken some build bots for a long time.
llvm-svn: 375375
Diffstat (limited to 'llvm/lib/Transforms/Utils')
-rw-r--r--llvm/lib/Transforms/Utils/SizeOpts.cpp68
1 files changed, 15 insertions, 53 deletions
diff --git a/llvm/lib/Transforms/Utils/SizeOpts.cpp b/llvm/lib/Transforms/Utils/SizeOpts.cpp
index f819c67d69d..1519751197d 100644
--- a/llvm/lib/Transforms/Utils/SizeOpts.cpp
+++ b/llvm/lib/Transforms/Utils/SizeOpts.cpp
@@ -10,66 +10,28 @@
//
//===----------------------------------------------------------------------===//
+#include "llvm/Analysis/BlockFrequencyInfo.h"
+#include "llvm/Analysis/ProfileSummaryInfo.h"
+#include "llvm/Support/CommandLine.h"
#include "llvm/Transforms/Utils/SizeOpts.h"
-
using namespace llvm;
-cl::opt<bool> EnablePGSO(
+static cl::opt<bool> ProfileGuidedSizeOpt(
"pgso", cl::Hidden, cl::init(true),
- cl::desc("Enable the profile guided size optimizations. "));
-
-cl::opt<bool> PGSOLargeWorkingSetSizeOnly(
- "pgso-lwss-only", cl::Hidden, cl::init(true),
- cl::desc("Apply the profile guided size optimizations only "
- "if the working set size is large (except for cold code.)"));
-
-cl::opt<bool> ForcePGSO(
- "force-pgso", cl::Hidden, cl::init(false),
- cl::desc("Force the (profiled-guided) size optimizations. "));
-
-cl::opt<int> PgsoCutoffInstrProf(
- "pgso-cutoff-instr-prof", cl::Hidden, cl::init(250000), cl::ZeroOrMore,
- cl::desc("The profile guided size optimization profile summary cutoff "
- "for instrumentation profile."));
-
-cl::opt<int> PgsoCutoffSampleProf(
- "pgso-cutoff-sample-prof", cl::Hidden, cl::init(800000), cl::ZeroOrMore,
- cl::desc("The profile guided size optimization profile summary cutoff "
- "for sample profile."));
-
-namespace {
-struct BasicBlockBFIAdapter {
- static bool isFunctionColdInCallGraph(const Function *F,
- ProfileSummaryInfo *PSI,
- BlockFrequencyInfo &BFI) {
- return PSI->isFunctionColdInCallGraph(F, BFI);
- }
- static bool isFunctionHotInCallGraphNthPercentile(int CutOff,
- const Function *F,
- ProfileSummaryInfo *PSI,
- BlockFrequencyInfo &BFI) {
- return PSI->isFunctionHotInCallGraphNthPercentile(CutOff, F, BFI);
- }
- static bool isColdBlock(const BasicBlock *BB,
- ProfileSummaryInfo *PSI,
- BlockFrequencyInfo *BFI) {
- return PSI->isColdBlock(BB, BFI);
- }
- static bool isHotBlockNthPercentile(int CutOff,
- const BasicBlock *BB,
- ProfileSummaryInfo *PSI,
- BlockFrequencyInfo *BFI) {
- return PSI->isHotBlockNthPercentile(CutOff, BB, BFI);
- }
-};
-} // end anonymous namespace
+ cl::desc("Enable the profile guided size optimization. "));
-bool llvm::shouldOptimizeForSize(const Function *F, ProfileSummaryInfo *PSI,
+bool llvm::shouldOptimizeForSize(Function *F, ProfileSummaryInfo *PSI,
BlockFrequencyInfo *BFI) {
- return shouldFuncOptimizeForSizeImpl<BasicBlockBFIAdapter>(F, PSI, BFI);
+ assert(F);
+ if (!PSI || !BFI || !PSI->hasProfileSummary())
+ return false;
+ return ProfileGuidedSizeOpt && PSI->isFunctionColdInCallGraph(F, *BFI);
}
-bool llvm::shouldOptimizeForSize(const BasicBlock *BB, ProfileSummaryInfo *PSI,
+bool llvm::shouldOptimizeForSize(BasicBlock *BB, ProfileSummaryInfo *PSI,
BlockFrequencyInfo *BFI) {
- return shouldOptimizeForSizeImpl<BasicBlockBFIAdapter>(BB, PSI, BFI);
+ assert(BB);
+ if (!PSI || !BFI || !PSI->hasProfileSummary())
+ return false;
+ return ProfileGuidedSizeOpt && PSI->isColdBlock(BB, BFI);
}
OpenPOWER on IntegriCloud