LLVM 20.0.0git
Macros | Functions | Variables
ModuleInliner.cpp File Reference
#include "llvm/Transforms/IPO/ModuleInliner.h"
#include "llvm/ADT/ScopeExit.h"
#include "llvm/ADT/SmallVector.h"
#include "llvm/ADT/Statistic.h"
#include "llvm/Analysis/AliasAnalysis.h"
#include "llvm/Analysis/AssumptionCache.h"
#include "llvm/Analysis/BlockFrequencyInfo.h"
#include "llvm/Analysis/CtxProfAnalysis.h"
#include "llvm/Analysis/InlineAdvisor.h"
#include "llvm/Analysis/InlineCost.h"
#include "llvm/Analysis/InlineOrder.h"
#include "llvm/Analysis/OptimizationRemarkEmitter.h"
#include "llvm/Analysis/ProfileSummaryInfo.h"
#include "llvm/Analysis/ReplayInlineAdvisor.h"
#include "llvm/Analysis/TargetLibraryInfo.h"
#include "llvm/IR/DiagnosticInfo.h"
#include "llvm/IR/Function.h"
#include "llvm/IR/InstIterator.h"
#include "llvm/IR/Instruction.h"
#include "llvm/IR/IntrinsicInst.h"
#include "llvm/IR/Module.h"
#include "llvm/IR/PassManager.h"
#include "llvm/Support/CommandLine.h"
#include "llvm/Support/Debug.h"
#include "llvm/Support/raw_ostream.h"
#include "llvm/Transforms/Utils/CallPromotionUtils.h"
#include "llvm/Transforms/Utils/Cloning.h"
#include <cassert>

Go to the source code of this file.

Macros

#define DEBUG_TYPE   "module-inline"
 

Functions

 STATISTIC (NumInlined, "Number of functions inlined")
 
 STATISTIC (NumDeleted, "Number of functions deleted because all callers found")
 
static bool inlineHistoryIncludes (Function *F, int InlineHistoryID, const SmallVectorImpl< std::pair< Function *, int > > &InlineHistory)
 Return true if the specified inline history ID indicates an inline history that includes the specified function.
 
static bool isKnownLibFunction (Function &F, TargetLibraryInfo &TLI)
 

Variables

cl::opt< boolCtxProfPromoteAlwaysInline ("ctx-prof-promote-alwaysinline", cl::init(false), cl::Hidden, cl::desc("If using a contextual profile in this module, and an indirect " "call target is marked as alwaysinline, perform indirect call " "promotion for that target. If multiple targets for an indirect " "call site fit this description, they are all promoted."))
 

Macro Definition Documentation

◆ DEBUG_TYPE

#define DEBUG_TYPE   "module-inline"

Definition at line 47 of file ModuleInliner.cpp.

Function Documentation

◆ inlineHistoryIncludes()

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 61 of file ModuleInliner.cpp.

References assert(), and F.

◆ isKnownLibFunction()

static bool isKnownLibFunction ( Function F,
TargetLibraryInfo TLI 
)
static

◆ STATISTIC() [1/2]

STATISTIC ( NumDeleted  ,
"Number of functions deleted because all callers found"   
)

◆ STATISTIC() [2/2]

STATISTIC ( NumInlined  ,
"Number of functions inlined"   
)

Variable Documentation

◆ CtxProfPromoteAlwaysInline

cl::opt< bool > CtxProfPromoteAlwaysInline("ctx-prof-promote-alwaysinline", cl::init(false), cl::Hidden, cl::desc("If using a contextual profile in this module, and an indirect " "call target is marked as alwaysinline, perform indirect call " "promotion for that target. If multiple targets for an indirect " "call site fit this description, they are all promoted.")) ( "ctx-prof-promote-alwaysinline"  ,
cl::init(false)  ,
cl::Hidden  ,
cl::desc("If using a contextual profile in this module, and an indirect " "call target is marked as alwaysinline, perform indirect call " "promotion for that target. If multiple targets for an indirect " "call site fit this description, they are all promoted.")   
)