diff options
| author | Vladimir Vereschaka <vvereschaka@accesssoftek.com> | 2019-10-20 20:39:33 +0000 |
|---|---|---|
| committer | Vladimir Vereschaka <vvereschaka@accesssoftek.com> | 2019-10-20 20:39:33 +0000 |
| commit | 92c96c7bc0b456cbc32da97df52b1acec238be9f (patch) | |
| tree | 2484a6598ff22bf44c2ee730d359f6647bbd9789 /llvm/lib/Transforms/Utils | |
| parent | b1b7a2f7b63db915fbc0e7ee5e1811b8846fbd9b (diff) | |
| download | bcm5719-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.cpp | 68 |
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); } |

