LLVM  8.0.1
Macros | Functions | Variables
InlineCost.cpp File Reference
#include "llvm/Analysis/InlineCost.h"
#include "llvm/ADT/STLExtras.h"
#include "llvm/ADT/SetVector.h"
#include "llvm/ADT/SmallPtrSet.h"
#include "llvm/ADT/SmallVector.h"
#include "llvm/ADT/Statistic.h"
#include "llvm/Analysis/AssumptionCache.h"
#include "llvm/Analysis/BlockFrequencyInfo.h"
#include "llvm/Analysis/CodeMetrics.h"
#include "llvm/Analysis/ConstantFolding.h"
#include "llvm/Analysis/CFG.h"
#include "llvm/Analysis/InstructionSimplify.h"
#include "llvm/Analysis/LoopInfo.h"
#include "llvm/Analysis/ProfileSummaryInfo.h"
#include "llvm/Analysis/TargetTransformInfo.h"
#include "llvm/Analysis/ValueTracking.h"
#include "llvm/Config/llvm-config.h"
#include "llvm/IR/CallSite.h"
#include "llvm/IR/CallingConv.h"
#include "llvm/IR/DataLayout.h"
#include "llvm/IR/Dominators.h"
#include "llvm/IR/GetElementPtrTypeIterator.h"
#include "llvm/IR/GlobalAlias.h"
#include "llvm/IR/InstVisitor.h"
#include "llvm/IR/IntrinsicInst.h"
#include "llvm/IR/Operator.h"
#include "llvm/Support/Debug.h"
#include "llvm/Support/raw_ostream.h"
Include dependency graph for InlineCost.cpp:

Go to the source code of this file.

Macros

#define DEBUG_TYPE   "inline-cost"
 
#define DEBUG_PRINT_STAT(x)   dbgs() << " " #x ": " << x << "\n"
 

Functions

 STATISTIC (NumCallsAnalyzed, "Number of call sites analyzed")
 
static bool functionsHaveCompatibleAttributes (Function *Caller, Function *Callee, TargetTransformInfo &TTI)
 Test that there are no attribute conflicts between Caller and Callee that prevent inlining. More...
 
static int computeThresholdFromOptLevels (unsigned OptLevel, unsigned SizeOptLevel)
 

Variables

static cl::opt< int > InlineThreshold ("inline-threshold", cl::Hidden, cl::init(225), cl::ZeroOrMore, cl::desc("Control the amount of inlining to perform (default = 225)"))
 
static cl::opt< int > HintThreshold ("inlinehint-threshold", cl::Hidden, cl::init(325), cl::desc("Threshold for inlining functions with inline hint"))
 
static cl::opt< int > ColdCallSiteThreshold ("inline-cold-callsite-threshold", cl::Hidden, cl::init(45), cl::desc("Threshold for inlining cold callsites"))
 
static cl::opt< int > ColdThreshold ("inlinecold-threshold", cl::Hidden, cl::init(45), cl::desc("Threshold for inlining functions with cold attribute"))
 
static cl::opt< int > HotCallSiteThreshold ("hot-callsite-threshold", cl::Hidden, cl::init(3000), cl::ZeroOrMore, cl::desc("Threshold for hot callsites "))
 
static cl::opt< int > LocallyHotCallSiteThreshold ("locally-hot-callsite-threshold", cl::Hidden, cl::init(525), cl::ZeroOrMore, cl::desc("Threshold for locally hot callsites "))
 
static cl::opt< int > ColdCallSiteRelFreq ("cold-callsite-rel-freq", cl::Hidden, cl::init(2), cl::ZeroOrMore, cl::desc("Maxmimum block frequency, expressed as a percentage of caller's " "entry frequency, for a callsite to be cold in the absence of " "profile information."))
 
static cl::opt< int > HotCallSiteRelFreq ("hot-callsite-rel-freq", cl::Hidden, cl::init(60), cl::ZeroOrMore, cl::desc("Minimum block frequency, expressed as a multiple of caller's " "entry frequency, for a callsite to be hot in the absence of " "profile information."))
 
static cl::opt< boolOptComputeFullInlineCost ("inline-cost-full", cl::Hidden, cl::init(false), cl::desc("Compute the full inline cost of a call site even when the cost " "exceeds the threshold."))
 

Macro Definition Documentation

◆ DEBUG_PRINT_STAT

#define DEBUG_PRINT_STAT (   x)    dbgs() << " " #x ": " << x << "\n"

◆ DEBUG_TYPE

#define DEBUG_TYPE   "inline-cost"

Definition at line 45 of file InlineCost.cpp.

Function Documentation

◆ computeThresholdFromOptLevels()

static int computeThresholdFromOptLevels ( unsigned  OptLevel,
unsigned  SizeOptLevel 
)
static

◆ functionsHaveCompatibleAttributes()

static bool functionsHaveCompatibleAttributes ( Function Caller,
Function Callee,
TargetTransformInfo TTI 
)
static

Test that there are no attribute conflicts between Caller and Callee that prevent inlining.

Definition at line 1949 of file InlineCost.cpp.

References llvm::AttributeFuncs::areInlineCompatible(), and llvm::TargetTransformInfo::areInlineCompatible().

Referenced by llvm::getInlineCost().

◆ STATISTIC()

STATISTIC ( NumCallsAnalyzed  ,
"Number of call sites analyzed"   
)

Variable Documentation

◆ ColdCallSiteRelFreq

cl::opt<int> ColdCallSiteRelFreq("cold-callsite-rel-freq", cl::Hidden, cl::init(2), cl::ZeroOrMore, cl::desc("Maxmimum block frequency, expressed as a percentage of caller's " "entry frequency, for a callsite to be cold in the absence of " "profile information."))
static

◆ ColdCallSiteThreshold

cl::opt<int> ColdCallSiteThreshold("inline-cold-callsite-threshold", cl::Hidden, cl::init(45), cl::desc("Threshold for inlining cold callsites"))
static

Referenced by llvm::getInlineParams().

◆ ColdThreshold

cl::opt<int> ColdThreshold("inlinecold-threshold", cl::Hidden, cl::init(45), cl::desc("Threshold for inlining functions with cold attribute"))
static

Referenced by llvm::getInlineParams().

◆ HintThreshold

cl::opt<int> HintThreshold("inlinehint-threshold", cl::Hidden, cl::init(325), cl::desc("Threshold for inlining functions with inline hint"))
static

Referenced by llvm::getInlineParams().

◆ HotCallSiteRelFreq

cl::opt<int> HotCallSiteRelFreq("hot-callsite-rel-freq", cl::Hidden, cl::init(60), cl::ZeroOrMore, cl::desc("Minimum block frequency, expressed as a multiple of caller's " "entry frequency, for a callsite to be hot in the absence of " "profile information."))
static

◆ HotCallSiteThreshold

cl::opt<int> HotCallSiteThreshold("hot-callsite-threshold", cl::Hidden, cl::init(3000), cl::ZeroOrMore, cl::desc("Threshold for hot callsites "))
static

◆ InlineThreshold

cl::opt<int> InlineThreshold("inline-threshold", cl::Hidden, cl::init(225), cl::ZeroOrMore, cl::desc("Control the amount of inlining to perform (default = 225)"))
static

◆ LocallyHotCallSiteThreshold

cl::opt<int> LocallyHotCallSiteThreshold("locally-hot-callsite-threshold", cl::Hidden, cl::init(525), cl::ZeroOrMore, cl::desc("Threshold for locally hot callsites "))
static

Referenced by llvm::getInlineParams().

◆ OptComputeFullInlineCost

cl::opt<bool> OptComputeFullInlineCost("inline-cost-full", cl::Hidden, cl::init(false), cl::desc("Compute the full inline cost of a call site even when the cost " "exceeds the threshold."))
static