|
LLVM 22.0.0git
|
#include "llvm/Transforms/IPO/PartialInlining.h"#include "llvm/ADT/DenseMap.h"#include "llvm/ADT/DenseSet.h"#include "llvm/ADT/DepthFirstIterator.h"#include "llvm/ADT/STLExtras.h"#include "llvm/ADT/SmallVector.h"#include "llvm/ADT/Statistic.h"#include "llvm/Analysis/BlockFrequencyInfo.h"#include "llvm/Analysis/BranchProbabilityInfo.h"#include "llvm/Analysis/InlineCost.h"#include "llvm/Analysis/LoopInfo.h"#include "llvm/Analysis/OptimizationRemarkEmitter.h"#include "llvm/Analysis/ProfileSummaryInfo.h"#include "llvm/Analysis/TargetLibraryInfo.h"#include "llvm/Analysis/TargetTransformInfo.h"#include "llvm/IR/Attributes.h"#include "llvm/IR/BasicBlock.h"#include "llvm/IR/CFG.h"#include "llvm/IR/DebugLoc.h"#include "llvm/IR/DiagnosticInfo.h"#include "llvm/IR/Dominators.h"#include "llvm/IR/Function.h"#include "llvm/IR/InstrTypes.h"#include "llvm/IR/Instruction.h"#include "llvm/IR/Instructions.h"#include "llvm/IR/IntrinsicInst.h"#include "llvm/IR/Intrinsics.h"#include "llvm/IR/Module.h"#include "llvm/IR/Operator.h"#include "llvm/IR/ProfDataUtils.h"#include "llvm/IR/User.h"#include "llvm/Support/BlockFrequency.h"#include "llvm/Support/BranchProbability.h"#include "llvm/Support/Casting.h"#include "llvm/Support/CommandLine.h"#include "llvm/Support/ErrorHandling.h"#include "llvm/Transforms/IPO.h"#include "llvm/Transforms/Utils/Cloning.h"#include "llvm/Transforms/Utils/CodeExtractor.h"#include "llvm/Transforms/Utils/ValueMapper.h"#include <algorithm>#include <cassert>#include <cstdint>#include <memory>#include <tuple>#include <vector>Go to the source code of this file.
Macros | |
| #define | DEBUG_TYPE "partial-inlining" |
Functions | |
| STATISTIC (NumPartialInlined, "Number of callsites functions partially inlined into.") | |
| STATISTIC (NumColdOutlinePartialInlined, "Number of times functions with " "cold outlined regions were partially " "inlined into its caller(s).") | |
| STATISTIC (NumColdRegionsFound, "Number of cold single entry/exit regions found.") | |
| STATISTIC (NumColdRegionsOutlined, "Number of cold single entry/exit regions outlined.") | |
| static bool | hasProfileData (const Function &F, const FunctionOutliningInfo &OI) |
Variables | |
| static cl::opt< bool > | DisablePartialInlining ("disable-partial-inlining", cl::init(false), cl::Hidden, cl::desc("Disable partial inlining")) |
| static cl::opt< bool > | DisableMultiRegionPartialInline ("disable-mr-partial-inlining", cl::init(false), cl::Hidden, cl::desc("Disable multi-region partial inlining")) |
| static cl::opt< bool > | ForceLiveExit ("pi-force-live-exit-outline", cl::init(false), cl::Hidden, cl::desc("Force outline regions with live exits")) |
| static cl::opt< bool > | MarkOutlinedColdCC ("pi-mark-coldcc", cl::init(false), cl::Hidden, cl::desc("Mark outline function calls with ColdCC")) |
| static cl::opt< bool > | SkipCostAnalysis ("skip-partial-inlining-cost-analysis", cl::ReallyHidden, cl::desc("Skip Cost Analysis")) |
| static cl::opt< float > | MinRegionSizeRatio ("min-region-size-ratio", cl::init(0.1), cl::Hidden, cl::desc("Minimum ratio comparing relative sizes of each " "outline candidate and original function")) |
| cl::opt< unsigned > | MinBlockCounterExecution ("min-block-execution", cl::init(100), cl::Hidden, cl::desc("Minimum block executions to consider " "its BranchProbabilityInfo valid")) |
| static cl::opt< float > | ColdBranchRatio ("cold-branch-ratio", cl::init(0.1), cl::Hidden, cl::desc("Minimum BranchProbability to consider a region cold.")) |
| static cl::opt< unsigned > | MaxNumInlineBlocks ("max-num-inline-blocks", cl::init(5), cl::Hidden, cl::desc("Max number of blocks to be partially inlined")) |
| static cl::opt< int > | MaxNumPartialInlining ("max-partial-inlining", cl::init(-1), cl::Hidden, cl::desc("Max number of partial inlining. The default is unlimited")) |
| static cl::opt< int > | OutlineRegionFreqPercent ("outline-region-freq-percent", cl::init(75), cl::Hidden, cl::desc("Relative frequency of outline region to " "the entry block")) |
| static cl::opt< unsigned > | ExtraOutliningPenalty ("partial-inlining-extra-penalty", cl::init(0), cl::Hidden, cl::desc("A debug option to add additional penalty to the computed one.")) |
| #define DEBUG_TYPE "partial-inlining" |
Definition at line 63 of file PartialInlining.cpp.
Definition at line 659 of file PartialInlining.cpp.
References llvm::dyn_cast(), E(), F, llvm::hasBranchWeightMD(), and llvm::BranchInst::isUnconditional().
| STATISTIC | ( | NumColdOutlinePartialInlined | , |
| "Number of times functions with " "cold outlined regions were partially " "inlined into its caller(s)." | ) |
| STATISTIC | ( | NumColdRegionsFound | , |
| "Number of cold single entry/exit regions found." | ) |
| STATISTIC | ( | NumColdRegionsOutlined | , |
| "Number of cold single entry/exit regions outlined." | ) |
| STATISTIC | ( | NumPartialInlined | , |
| "Number of callsites functions partially inlined into." | ) |
|
static |
|
static |
|
static |
|
static |
|
static |
|
static |
|
static |
|
static |
| cl::opt< unsigned > MinBlockCounterExecution("min-block-execution", cl::init(100), cl::Hidden, cl::desc("Minimum block executions to consider " "its BranchProbabilityInfo valid")) | ( | "min-block-execution" | , |
| cl::init(100) | , | ||
| cl::Hidden | , | ||
| cl::desc("Minimum block executions to consider " "its BranchProbabilityInfo valid") | ) |
|
static |
|
static |