LLVM 24.0.0git
llvm::FunctionSummary Class Reference

Function summary information to aid decisions and implementation of importing. More...

#include "llvm/IR/ModuleSummaryIndex.h"

Inheritance diagram for llvm::FunctionSummary:
[legend]

Classes

struct  ConstVCall
 A specification for a virtual function call with all constant integer arguments. More...
struct  FFlags
 Flags specific to function summaries. More...
struct  ParamAccess
 Describes the uses of a parameter by the function. More...
struct  TypeIdInfo
 All type identifier related information. More...
struct  VFuncId
 An "identifier" for a virtual function. More...

Public Types

using EdgeTy = std::pair<ValueInfo, CalleeInfo>
 <CalleeValueInfo, CalleeInfo> call edge pair.
Public Types inherited from llvm::GlobalValueSummary
enum  SummaryKind : unsigned { AliasKind , FunctionKind , GlobalVarKind }
 Sububclass discriminator (for dyn_cast<> et al.) More...
enum  ImportKind : unsigned { Definition = 0 , Declaration = 1 }

Public Member Functions

 FunctionSummary (GVFlags Flags, unsigned NumInsts, FFlags FunFlags, SmallVectorImpl< ValueInfo > &&Refs, SmallVectorImpl< EdgeTy > &&CGEdges, std::vector< GlobalValue::GUID > TypeTests, std::vector< VFuncId > TypeTestAssumeVCalls, std::vector< VFuncId > TypeCheckedLoadVCalls, std::vector< ConstVCall > TypeTestAssumeConstVCalls, std::vector< ConstVCall > TypeCheckedLoadConstVCalls, std::vector< ParamAccess > Params, CallsitesTy CallsiteList, AllocsTy AllocList)
LLVM_ABI std::pair< unsigned, unsigned > specialRefCounts () const
FFlags fflags () const
 Get function summary flags.
void setNoRecurse ()
void setNoUnwind ()
unsigned instCount () const
 Get the instruction count recorded for this function.
ArrayRef< EdgeTy > calls () const
 Return the list of <CalleeValueInfo, CalleeInfo> pairs.
SmallVector< EdgeTy, 0 > & mutableCalls ()
void addCall (EdgeTy E)
ArrayRef< GlobalValue::GUID > type_tests () const
 Returns the list of type identifiers used by this function in llvm.type.test intrinsics other than by an llvm.assume intrinsic, represented as GUIDs.
ArrayRef< VFuncId > type_test_assume_vcalls () const
 Returns the list of virtual calls made by this function using llvm.assume(llvm.type.test) intrinsics that do not have all constant integer arguments.
ArrayRef< VFuncId > type_checked_load_vcalls () const
 Returns the list of virtual calls made by this function using llvm.type.checked.load intrinsics that do not have all constant integer arguments.
ArrayRef< ConstVCall > type_test_assume_const_vcalls () const
 Returns the list of virtual calls made by this function using llvm.assume(llvm.type.test) intrinsics with all constant integer arguments.
ArrayRef< ConstVCall > type_checked_load_const_vcalls () const
 Returns the list of virtual calls made by this function using llvm.type.checked.load intrinsics with all constant integer arguments.
ArrayRef< ParamAccess > paramAccesses () const
 Returns the list of known uses of pointer parameters.
void setParamAccesses (std::vector< ParamAccess > NewParams)
 Sets the list of known uses of pointer parameters.
void addTypeTest (GlobalValue::GUID Guid)
 Add a type test to the summary.
const TypeIdInfo * getTypeIdInfo () const
ArrayRef< CallsiteInfo > callsites () const
CallsitesTy & mutableCallsites ()
void addCallsite (CallsiteInfo &&Callsite)
ArrayRef< AllocInfo > allocs () const
void addAlloc (AllocInfo &&Alloc)
AllocsTy & mutableAllocs ()
Public Member Functions inherited from llvm::GlobalValueSummary
virtual ~GlobalValueSummary ()=default
GlobalValue::GUID getOriginalName () const
 Returns the hash of the original name, it is identical to the GUID for externally visible symbols, but not for local ones.
void setOriginalName (GlobalValue::GUID Name)
 Initialize the original name hash in this summary.
SummaryKind getSummaryKind () const
 Which kind of summary subclass this is.
void setModulePath (StringRef ModPath)
 Set the path to the module containing this function, for use in the combined index.
StringRef modulePath () const
 Get the path to the module containing this function.
GVFlags flags () const
 Get the flags for this GlobalValue (see struct GVFlags).
GlobalValue::LinkageTypes linkage () const
 Return linkage type recorded for this global value.
bool wasPromoted () const
void promote ()
void setLinkage (GlobalValue::LinkageTypes Linkage)
 Sets the linkage to the value determined by global summary-based optimization.
void setExternalLinkageForTest ()
bool notEligibleToImport () const
 Return true if this global value can't be imported.
bool isLive () const
void setLive (bool Live)
void setDSOLocal (bool Local)
bool isDSOLocal () const
void setCanAutoHide (bool CanAutoHide)
bool canAutoHide () const
bool shouldImportAsDecl () const
void setImportKind (ImportKind IK)
void setNoRenameOnPromotion (bool NoRenameOnPromotion)
bool noRenameOnPromotion () const
GlobalValueSummary::ImportKind importType () const
GlobalValue::VisibilityTypes getVisibility () const
void setVisibility (GlobalValue::VisibilityTypes Vis)
void setNotEligibleToImport ()
 Flag that this global value cannot be imported.
ArrayRef< ValueInfo > refs () const
 Return the list of values referenced by this global value definition.
GlobalValueSummary * getBaseObject ()
 If this is an alias summary, returns the summary of the aliased object (a global variable or function), otherwise returns itself.
const GlobalValueSummary * getBaseObject () const

Static Public Member Functions

static FunctionSummary makeDummyFunctionSummary (SmallVectorImpl< FunctionSummary::EdgeTy > &&Edges)
 Create an empty FunctionSummary (with specified call edges).
static bool classof (const GlobalValueSummary *GVS)
 Check if this is a function summary.

Static Public Attributes

static LLVM_ABI FunctionSummary ExternalNode
 A dummy node to reference external functions that aren't in the index.

Friends

struct GraphTraits< ValueInfo >

Additional Inherited Members

Protected Member Functions inherited from llvm::GlobalValueSummary
 GlobalValueSummary (SummaryKind K, GVFlags Flags, SmallVectorImpl< ValueInfo > &&Refs)

Detailed Description

Function summary information to aid decisions and implementation of importing.

Definition at line 854 of file ModuleSummaryIndex.h.

Member Typedef Documentation

◆ EdgeTy

<CalleeValueInfo, CalleeInfo> call edge pair.

Definition at line 857 of file ModuleSummaryIndex.h.

Constructor & Destructor Documentation

◆ FunctionSummary()

llvm::FunctionSummary::FunctionSummary ( GVFlags Flags,
unsigned NumInsts,
FFlags FunFlags,
SmallVectorImpl< ValueInfo > && Refs,
SmallVectorImpl< EdgeTy > && CGEdges,
std::vector< GlobalValue::GUID > TypeTests,
std::vector< VFuncId > TypeTestAssumeVCalls,
std::vector< VFuncId > TypeCheckedLoadVCalls,
std::vector< ConstVCall > TypeTestAssumeConstVCalls,
std::vector< ConstVCall > TypeCheckedLoadConstVCalls,
std::vector< ParamAccess > Params,
CallsitesTy CallsiteList,
AllocsTy AllocList )
inline

Member Function Documentation

◆ addAlloc()

void llvm::FunctionSummary::addAlloc ( AllocInfo && Alloc)
inline

Definition at line 1209 of file ModuleSummaryIndex.h.

References llvm::Alloc.

◆ addCall()

void llvm::FunctionSummary::addCall ( EdgeTy E)
inline

Definition at line 1113 of file ModuleSummaryIndex.h.

References E().

◆ addCallsite()

void llvm::FunctionSummary::addCallsite ( CallsiteInfo && Callsite)
inline

Definition at line 1197 of file ModuleSummaryIndex.h.

◆ addTypeTest()

void llvm::FunctionSummary::addTypeTest ( GlobalValue::GUID Guid)
inline

Add a type test to the summary.

This is used by WholeProgramDevirt if we were unable to devirtualize a checked call.

Definition at line 1178 of file ModuleSummaryIndex.h.

References llvm::Guid.

◆ allocs()

ArrayRef< AllocInfo > llvm::FunctionSummary::allocs ( ) const
inline

Definition at line 1203 of file ModuleSummaryIndex.h.

◆ calls()

ArrayRef< EdgeTy > llvm::FunctionSummary::calls ( ) const
inline

Return the list of <CalleeValueInfo, CalleeInfo> pairs.

Definition at line 1109 of file ModuleSummaryIndex.h.

Referenced by llvm::thinLTOPropagateFunctionAttrs().

◆ callsites()

ArrayRef< CallsiteInfo > llvm::FunctionSummary::callsites ( ) const
inline

Definition at line 1186 of file ModuleSummaryIndex.h.

◆ classof()

bool llvm::FunctionSummary::classof ( const GlobalValueSummary * GVS)
inlinestatic

◆ fflags()

FFlags llvm::FunctionSummary::fflags ( ) const
inline

Get function summary flags.

Definition at line 1099 of file ModuleSummaryIndex.h.

Referenced by llvm::thinLTOPropagateFunctionAttrs().

◆ getTypeIdInfo()

const TypeIdInfo * llvm::FunctionSummary::getTypeIdInfo ( ) const
inline

Definition at line 1184 of file ModuleSummaryIndex.h.

◆ instCount()

unsigned llvm::FunctionSummary::instCount ( ) const
inline

Get the instruction count recorded for this function.

Definition at line 1106 of file ModuleSummaryIndex.h.

◆ makeDummyFunctionSummary()

FunctionSummary llvm::FunctionSummary::makeDummyFunctionSummary ( SmallVectorImpl< FunctionSummary::EdgeTy > && Edges)
inlinestatic

Create an empty FunctionSummary (with specified call edges).

Used to represent external nodes and the dummy root node.

Definition at line 1002 of file ModuleSummaryIndex.h.

References llvm::GlobalValue::AvailableExternallyLinkage, llvm::GlobalValue::DefaultVisibility, llvm::GlobalValueSummary::Definition, FunctionSummary(), and llvm::SmallVector.

Referenced by llvm::ModuleSummaryIndex::calculateCallGraphRoot().

◆ mutableAllocs()

AllocsTy & llvm::FunctionSummary::mutableAllocs ( )
inline

Definition at line 1215 of file ModuleSummaryIndex.h.

◆ mutableCalls()

SmallVector< EdgeTy, 0 > & llvm::FunctionSummary::mutableCalls ( )
inline

Definition at line 1111 of file ModuleSummaryIndex.h.

◆ mutableCallsites()

CallsitesTy & llvm::FunctionSummary::mutableCallsites ( )
inline

Definition at line 1192 of file ModuleSummaryIndex.h.

References assert().

◆ paramAccesses()

ArrayRef< ParamAccess > llvm::FunctionSummary::paramAccesses ( ) const
inline

Returns the list of known uses of pointer parameters.

Definition at line 1160 of file ModuleSummaryIndex.h.

◆ setNoRecurse()

void llvm::FunctionSummary::setNoRecurse ( )
inline

Definition at line 1101 of file ModuleSummaryIndex.h.

◆ setNoUnwind()

void llvm::FunctionSummary::setNoUnwind ( )
inline

Definition at line 1103 of file ModuleSummaryIndex.h.

◆ setParamAccesses()

void llvm::FunctionSummary::setParamAccesses ( std::vector< ParamAccess > NewParams)
inline

Sets the list of known uses of pointer parameters.

Definition at line 1167 of file ModuleSummaryIndex.h.

◆ specialRefCounts()

std::pair< unsigned, unsigned > FunctionSummary::specialRefCounts ( ) const

Definition at line 83 of file ModuleSummaryIndex.cpp.

References I, and llvm::GlobalValueSummary::refs().

◆ type_checked_load_const_vcalls()

ArrayRef< ConstVCall > llvm::FunctionSummary::type_checked_load_const_vcalls ( ) const
inline

Returns the list of virtual calls made by this function using llvm.type.checked.load intrinsics with all constant integer arguments.

Definition at line 1153 of file ModuleSummaryIndex.h.

◆ type_checked_load_vcalls()

ArrayRef< VFuncId > llvm::FunctionSummary::type_checked_load_vcalls ( ) const
inline

Returns the list of virtual calls made by this function using llvm.type.checked.load intrinsics that do not have all constant integer arguments.

Definition at line 1136 of file ModuleSummaryIndex.h.

◆ type_test_assume_const_vcalls()

ArrayRef< ConstVCall > llvm::FunctionSummary::type_test_assume_const_vcalls ( ) const
inline

Returns the list of virtual calls made by this function using llvm.assume(llvm.type.test) intrinsics with all constant integer arguments.

Definition at line 1145 of file ModuleSummaryIndex.h.

◆ type_test_assume_vcalls()

ArrayRef< VFuncId > llvm::FunctionSummary::type_test_assume_vcalls ( ) const
inline

Returns the list of virtual calls made by this function using llvm.assume(llvm.type.test) intrinsics that do not have all constant integer arguments.

Definition at line 1127 of file ModuleSummaryIndex.h.

◆ type_tests()

ArrayRef< GlobalValue::GUID > llvm::FunctionSummary::type_tests ( ) const
inline

Returns the list of type identifiers used by this function in llvm.type.test intrinsics other than by an llvm.assume intrinsic, represented as GUIDs.

Definition at line 1118 of file ModuleSummaryIndex.h.

◆ GraphTraits< ValueInfo >

friend struct GraphTraits< ValueInfo >
friend

Definition at line 1215 of file ModuleSummaryIndex.h.

References assert().

Member Data Documentation

◆ ExternalNode

FunctionSummary FunctionSummary::ExternalNode
static
Initial value:
=
static FunctionSummary makeDummyFunctionSummary(SmallVectorImpl< FunctionSummary::EdgeTy > &&Edges)
Create an empty FunctionSummary (with specified call edges).
This is a 'vector' (really, a variable-sized array), optimized for the case when the array is small.

A dummy node to reference external functions that aren't in the index.

Definition at line 1021 of file ModuleSummaryIndex.h.

Referenced by llvm::GraphTraits< ValueInfo >::child_begin(), llvm::GraphTraits< ValueInfo >::child_edge_begin(), llvm::GraphTraits< ValueInfo >::child_edge_end(), and llvm::GraphTraits< ValueInfo >::child_end().


The documentation for this class was generated from the following files: