class FunctionSummary

Declaration

class FunctionSummary : public GlobalValueSummary { /* full declaration omitted */ };

Description

Function summary information to aid decisions and implementation of importing.

Declared at: llvm/include/llvm/IR/ModuleSummaryIndex.h:512

Inherits from: GlobalValueSummary

Member Variables

private unsigned int InstCount
Number of instructions (ignoring debug instructions, e.g.) computed during the initial compile step when the summary index is first built.
private llvm::FunctionSummary::FFlags FunFlags
Function summary specific flags.
private uint64_t EntryCount = 0
The synthesized entry count of the function. This is only populated during ThinLink phase and remains unused while generating per-module summaries.
private std::vector<EdgeTy> CallGraphEdgeList
List of <CalleeValueInfo , CalleeInfo> call edge pairs from this function.
private std::unique_ptr<TypeIdInfo> TIdInfo
private std::unique_ptr<ParamAccessesTy> ParamAccesses
public static llvm::FunctionSummary ExternalNode
A dummy node to reference external functions that aren't in the index

Method Overview

  • public FunctionSummary(llvm::GlobalValueSummary::GVFlags Flags, unsigned int NumInsts, llvm::FunctionSummary::FFlags FunFlags, uint64_t EntryCount, std::vector<ValueInfo> Refs, std::vector<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)
  • public void addCall(llvm::FunctionSummary::EdgeTy E)
  • public void addTypeTest(GlobalValue::GUID Guid)
  • public ArrayRef<llvm::FunctionSummary::EdgeTy> calls() const
  • public static bool classof(const llvm::GlobalValueSummary * GVS)
  • public uint64_t entryCount() const
  • public llvm::FunctionSummary::FFlags fflags() const
  • public const llvm::FunctionSummary::TypeIdInfo * getTypeIdInfo() const
  • public unsigned int instCount() const
  • public static llvm::FunctionSummary makeDummyFunctionSummary(std::vector<FunctionSummary::EdgeTy> Edges)
  • public std::vector<EdgeTy> & mutableCalls()
  • public ArrayRef<llvm::FunctionSummary::ParamAccess> paramAccesses() const
  • public void setEntryCount(uint64_t EC)
  • public void setNoRecurse()
  • public void setNoUnwind()
  • public void setParamAccesses(std::vector<ParamAccess> NewParams)
  • public std::pair<unsigned int, unsigned int> specialRefCounts() const
  • public ArrayRef<llvm::FunctionSummary::ConstVCall> type_checked_load_const_vcalls() const
  • public ArrayRef<llvm::FunctionSummary::VFuncId> type_checked_load_vcalls() const
  • public ArrayRef<llvm::FunctionSummary::ConstVCall> type_test_assume_const_vcalls() const
  • public ArrayRef<llvm::FunctionSummary::VFuncId> type_test_assume_vcalls() const
  • public ArrayRef<GlobalValue::GUID> type_tests() const

Inherited from GlobalValueSummary:

Methods

FunctionSummary(
    llvm::GlobalValueSummary::GVFlags Flags,
    unsigned int NumInsts,
    llvm::FunctionSummary::FFlags FunFlags,
    uint64_t EntryCount,
    std::vector<ValueInfo> Refs,
    std::vector<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)

Declared at: llvm/include/llvm/IR/ModuleSummaryIndex.h:710

Parameters

llvm::GlobalValueSummary::GVFlags Flags
unsigned int NumInsts
llvm::FunctionSummary::FFlags FunFlags
uint64_t EntryCount
std::vector<ValueInfo> Refs
std::vector<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

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

Declared at: llvm/include/llvm/IR/ModuleSummaryIndex.h:762

Parameters

llvm::FunctionSummary::EdgeTy E

void addTypeTest(GlobalValue::GUID Guid)

Description

Add a type test to the summary. This is used by WholeProgramDevirt if we were unable to devirtualize a checked call.

Declared at: llvm/include/llvm/IR/ModuleSummaryIndex.h:827

Parameters

GlobalValue::GUID Guid

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

Description

Return the list of <CalleeValueInfo , CalleeInfo> pairs.

Declared at: llvm/include/llvm/IR/ModuleSummaryIndex.h:758

static bool classof(
    const llvm::GlobalValueSummary* GVS)

Description

Check if this is a function summary.

Declared at: llvm/include/llvm/IR/ModuleSummaryIndex.h:737

Parameters

const llvm::GlobalValueSummary* GVS

uint64_t entryCount() const

Description

Get the synthetic entry count for this function.

Declared at: llvm/include/llvm/IR/ModuleSummaryIndex.h:752

llvm::FunctionSummary::FFlags fflags() const

Description

Get function summary flags.

Declared at: llvm/include/llvm/IR/ModuleSummaryIndex.h:742

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

Declared at: llvm/include/llvm/IR/ModuleSummaryIndex.h:833

unsigned int instCount() const

Description

Get the instruction count recorded for this function.

Declared at: llvm/include/llvm/IR/ModuleSummaryIndex.h:749

static llvm::FunctionSummary
makeDummyFunctionSummary(
    std::vector<FunctionSummary::EdgeTy> Edges)

Description

Create an empty FunctionSummary (with specified call edges). Used to represent external nodes and the dummy root node.

Declared at: llvm/include/llvm/IR/ModuleSummaryIndex.h:667

Parameters

std::vector<FunctionSummary::EdgeTy> Edges

std::vector<EdgeTy>& mutableCalls()

Declared at: llvm/include/llvm/IR/ModuleSummaryIndex.h:760

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

Description

Returns the list of known uses of pointer parameters.

Declared at: llvm/include/llvm/IR/ModuleSummaryIndex.h:809

void setEntryCount(uint64_t EC)

Description

Set the synthetic entry count for this function.

Declared at: llvm/include/llvm/IR/ModuleSummaryIndex.h:755

Parameters

uint64_t EC

void setNoRecurse()

Declared at: llvm/include/llvm/IR/ModuleSummaryIndex.h:744

void setNoUnwind()

Declared at: llvm/include/llvm/IR/ModuleSummaryIndex.h:746

void setParamAccesses(
    std::vector<ParamAccess> NewParams)

Description

Sets the list of known uses of pointer parameters.

Declared at: llvm/include/llvm/IR/ModuleSummaryIndex.h:816

Parameters

std::vector<ParamAccess> NewParams

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

Declared at: llvm/include/llvm/IR/ModuleSummaryIndex.h:734

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

Description

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

Declared at: llvm/include/llvm/IR/ModuleSummaryIndex.h:802

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

Description

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

Declared at: llvm/include/llvm/IR/ModuleSummaryIndex.h:785

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

Description

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

Declared at: llvm/include/llvm/IR/ModuleSummaryIndex.h:794

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

Description

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.

Declared at: llvm/include/llvm/IR/ModuleSummaryIndex.h:776

ArrayRef<GlobalValue::GUID> type_tests() const

Description

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.

Declared at: llvm/include/llvm/IR/ModuleSummaryIndex.h:767