LLVM  mainline
Defines | Typedefs | Functions | Variables
Inliner.cpp File Reference
#include "llvm/Transforms/IPO/InlinerPass.h"
#include "llvm/ADT/SmallPtrSet.h"
#include "llvm/ADT/Statistic.h"
#include "llvm/Analysis/AliasAnalysis.h"
#include "llvm/Analysis/AssumptionCache.h"
#include "llvm/Analysis/CallGraph.h"
#include "llvm/Analysis/InlineCost.h"
#include "llvm/Analysis/TargetLibraryInfo.h"
#include "llvm/IR/CallSite.h"
#include "llvm/IR/DataLayout.h"
#include "llvm/IR/DiagnosticInfo.h"
#include "llvm/IR/Instructions.h"
#include "llvm/IR/IntrinsicInst.h"
#include "llvm/IR/Module.h"
#include "llvm/Support/CommandLine.h"
#include "llvm/Support/Debug.h"
#include "llvm/Support/raw_ostream.h"
#include "llvm/Transforms/Utils/Cloning.h"
#include "llvm/Transforms/Utils/Local.h"
Include dependency graph for Inliner.cpp:

Go to the source code of this file.

Defines

#define DEBUG_TYPE   "inline"

Typedefs

typedef DenseMap< ArrayType
*, std::vector< AllocaInst * > > 
InlinedArrayAllocasTy

Functions

 STATISTIC (NumInlined,"Number of functions inlined")
 STATISTIC (NumCallsDeleted,"Number of call sites deleted, not inlined")
 STATISTIC (NumDeleted,"Number of functions deleted because all callers found")
 STATISTIC (NumMergedAllocas,"Number of allocas merged together")
 STATISTIC (NumCallerCallersAnalyzed,"Number of caller-callers analyzed")
static void AdjustCallerSSPLevel (Function *Caller, Function *Callee)
 If the inlined function had a higher stack protection level than the calling function, then bump up the caller's stack protection level.
static bool InlineCallIfPossible (CallSite CS, InlineFunctionInfo &IFI, InlinedArrayAllocasTy &InlinedArrayAllocas, int InlineHistory, bool InsertLifetime)
static void emitAnalysis (CallSite CS, const Twine &Msg)
static bool InlineHistoryIncludes (Function *F, int InlineHistoryID, const SmallVectorImpl< std::pair< Function *, int > > &InlineHistory)

Variables

static cl::opt< intInlineLimit ("inline-threshold", cl::Hidden, cl::init(225), cl::ZeroOrMore, cl::desc("Control the amount of inlining to perform (default = 225)"))
static cl::opt< intHintThreshold ("inlinehint-threshold", cl::Hidden, cl::init(325), cl::desc("Threshold for inlining functions with inline hint"))
static cl::opt< intColdThreshold ("inlinecold-threshold", cl::Hidden, cl::init(225), cl::desc("Threshold for inlining functions with cold attribute"))
const int OptSizeThreshold = 75

Define Documentation

#define DEBUG_TYPE   "inline"

Definition at line 37 of file Inliner.cpp.


Typedef Documentation

Definition at line 86 of file Inliner.cpp.


Function Documentation

static void AdjustCallerSSPLevel ( Function Caller,
Function Callee 
) [static]

If the inlined function had a higher stack protection level than the calling function, then bump up the caller's stack protection level.

Definition at line 90 of file Inliner.cpp.

References llvm::AttrBuilder::addAttribute(), llvm::Function::addFnAttr(), llvm::AttributeSet::FunctionIndex, llvm::Function::getContext(), llvm::Function::hasFnAttribute(), llvm::Function::removeAttributes(), llvm::Attribute::StackProtect, llvm::Attribute::StackProtectReq, and llvm::Attribute::StackProtectStrong.

Referenced by InlineCallIfPossible().

static void emitAnalysis ( CallSite  CS,
const Twine Msg 
) [static]
static bool InlineCallIfPossible ( CallSite  CS,
InlineFunctionInfo IFI,
InlinedArrayAllocasTy InlinedArrayAllocas,
int  InlineHistory,
bool  InsertLifetime 
) [static]
static bool InlineHistoryIncludes ( Function F,
int  InlineHistoryID,
const SmallVectorImpl< std::pair< Function *, int > > &  InlineHistory 
) [static]

Return true if the specified inline history ID indicates an inline history that includes the specified function.

Definition at line 413 of file Inliner.cpp.

Referenced by llvm::Inliner::runOnSCC().

STATISTIC ( NumInlined  ,
"Number of functions inlined"   
)
STATISTIC ( NumCallsDeleted  ,
"Number of call sites  deleted,
not inlined"   
)
STATISTIC ( NumDeleted  ,
"Number of functions deleted because all callers found"   
)
STATISTIC ( NumMergedAllocas  ,
"Number of allocas merged together"   
)
STATISTIC ( NumCallerCallersAnalyzed  ,
"Number of caller-callers analyzed"   
)

Variable Documentation

cl::opt<int> ColdThreshold("inlinecold-threshold", cl::Hidden, cl::init(225), cl::desc("Threshold for inlining functions with cold attribute")) [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> InlineLimit("inline-threshold", cl::Hidden, cl::init(225), cl::ZeroOrMore, cl::desc("Control the amount of inlining to perform (default = 225)")) [static]

Definition at line 65 of file Inliner.cpp.

Referenced by llvm::Inliner::getInlineThreshold().