|
LLVM 22.0.0git
|
#include "llvm/Analysis/ModuleSummaryAnalysis.h"#include "llvm/ADT/ArrayRef.h"#include "llvm/ADT/DenseSet.h"#include "llvm/ADT/MapVector.h"#include "llvm/ADT/STLExtras.h"#include "llvm/ADT/SetVector.h"#include "llvm/ADT/SmallPtrSet.h"#include "llvm/ADT/SmallVector.h"#include "llvm/ADT/StringRef.h"#include "llvm/Analysis/BlockFrequencyInfo.h"#include "llvm/Analysis/BranchProbabilityInfo.h"#include "llvm/Analysis/ConstantFolding.h"#include "llvm/Analysis/IndirectCallPromotionAnalysis.h"#include "llvm/Analysis/LoopInfo.h"#include "llvm/Analysis/MemoryProfileInfo.h"#include "llvm/Analysis/ProfileSummaryInfo.h"#include "llvm/Analysis/StackSafetyAnalysis.h"#include "llvm/Analysis/TypeMetadataUtils.h"#include "llvm/IR/Attributes.h"#include "llvm/IR/BasicBlock.h"#include "llvm/IR/Constant.h"#include "llvm/IR/Constants.h"#include "llvm/IR/Dominators.h"#include "llvm/IR/Function.h"#include "llvm/IR/GlobalAlias.h"#include "llvm/IR/GlobalValue.h"#include "llvm/IR/GlobalVariable.h"#include "llvm/IR/Instructions.h"#include "llvm/IR/IntrinsicInst.h"#include "llvm/IR/Metadata.h"#include "llvm/IR/Module.h"#include "llvm/IR/ModuleSummaryIndex.h"#include "llvm/IR/Use.h"#include "llvm/IR/User.h"#include "llvm/InitializePasses.h"#include "llvm/Object/ModuleSymbolTable.h"#include "llvm/Object/SymbolicFile.h"#include "llvm/Pass.h"#include "llvm/Support/Casting.h"#include "llvm/Support/CommandLine.h"#include "llvm/Support/Compiler.h"#include "llvm/Support/FileSystem.h"#include <cassert>#include <cstdint>#include <vector>Go to the source code of this file.
Namespaces | |
| namespace | llvm |
| This is an optimization pass for GlobalISel generic memory operations. | |
Macros | |
| #define | DEBUG_TYPE "module-summary-analysis" |
| #define DEBUG_TYPE "module-summary-analysis" |
Definition at line 63 of file ModuleSummaryAnalysis.cpp.
|
static |
If this intrinsic call requires that we add information to the function summary, do so via the non-constant reference arguments.
Definition at line 218 of file ModuleSummaryAnalysis.cpp.
References addVCallToSet(), llvm::any_of(), Call, llvm::cast(), llvm::dyn_cast(), llvm::findDevirtualizableCallsForTypeCheckedLoad(), llvm::findDevirtualizableCallsForTypeTest(), llvm::CallBase::getArgOperand(), llvm::CallBase::getCalledFunction(), llvm::GlobalValue::getGUIDAssumingExternalLinkage(), llvm::Function::getIntrinsicID(), llvm::Guid, and llvm::Value::uses().
Referenced by computeFunctionSummary().
|
static |
Determine whether this call has all constant integer arguments (excluding "this") and summarize it to VCalls or ConstVCalls as appropriate.
Definition at line 197 of file ModuleSummaryAnalysis.cpp.
References Call, llvm::drop_begin(), llvm::dyn_cast(), and llvm::Guid.
Referenced by addIntrinsicToSummary().
|
static |
Definition at line 916 of file ModuleSummaryAnalysis.cpp.
References A(), assert(), llvm::GlobalValueSummary::Definition, llvm::GlobalValue::getGUID(), llvm::detail::DenseSetImpl< ValueT, MapTy, ValueInfoT >::insert(), llvm::isa(), and isNonRenamableLocal().
Referenced by llvm::buildModuleSummaryIndex().
|
static |
Definition at line 318 of file ModuleSummaryAnalysis.cpp.
References addIntrinsicToSummary(), assert(), llvm::SmallVectorTemplateCommon< T, typename >::back(), BBFreq, llvm::memprof::CallStack< NodeT, IteratorT >::beginAfterSharedPrefix(), llvm::cast(), llvm::CalleeInfo::Cold, llvm::detail::DenseSetImpl< ValueT, MapTy, ValueInfoT >::count(), llvm::CalleeInfo::Critical, llvm::GlobalValueSummary::Definition, llvm::dyn_cast(), llvm::dyn_cast_if_present(), llvm::mdconst::dyn_extract(), llvm::memprof::CallStack< NodeT, IteratorT >::empty(), llvm::SmallVectorTemplateCommon< T, typename >::empty(), llvm::EnableMemProfIndirectCallSupport, llvm::memprof::CallStack< NodeT, IteratorT >::end(), llvm::mdconst::extract_or_null(), F, findRefEdges(), llvm::ForceSummaryEdgesCold, llvm::FunctionSummary::FSHT_All, llvm::FunctionSummary::FSHT_None, llvm::BlockAddress::get(), llvm::BlockFrequencyInfo::getBlockFreq(), llvm::BlockFrequencyInfo::getEntryFreq(), llvm::BlockFrequency::getFrequency(), getHotness(), llvm::memprof::getMIBAllocType(), llvm::memprof::getMIBStackNode(), llvm::MDNode::getNumOperands(), llvm::MDNode::getOperand(), llvm::ProfileSummaryInfo::getProfileCount(), llvm::ICallPromotionAnalysis::getPromotionCandidatesForInstruction(), llvm::ProfileSummaryInfo::hasPartialSampleProfile(), I, llvm::detail::DenseSetImpl< ValueT, MapTy, ValueInfoT >::insert(), llvm::SetVector< T, Vector, Set, N >::insert(), llvm::SmallPtrSetImpl< PtrType >::insert(), llvm::SetVector< T, Vector, Set, N >::insert_range(), llvm::isa(), isNonRenamableLocal(), isNonVolatileLoad(), isNonVolatileStore(), llvm::MaxSummaryIndirectEdges, llvm::mayHaveMemprofSummary(), llvm::memprof::metadataIncludesAllContextSizeInfo(), mustBeUnreachableFunction(), llvm::SmallVectorTemplateBase< T, bool >::push_back(), llvm::SetVector< T, Vector, Set, N >::remove(), llvm::ScalePartialSampleProfileWorkingSetSize, llvm::SetVector< T, Vector, Set, N >::size(), llvm::SmallVectorTemplateCommon< T, typename >::size(), llvm::MapVector< KeyT, ValueT, MapType, VectorType >::takeVector(), llvm::SetVector< T, Vector, Set, N >::takeVector(), llvm::CalleeInfo::Unknown, and users.
Referenced by llvm::buildModuleSummaryIndex().
|
static |
Definition at line 865 of file ModuleSummaryAnalysis.cpp.
References computeVTableFuncs(), llvm::GlobalValueSummary::Definition, findRefEdges(), llvm::detail::DenseSetImpl< ValueT, MapTy, ValueInfoT >::insert(), isNonRenamableLocal(), recordTypeIdCompatibleVtableReferences(), and llvm::SetVector< T, Vector, Set, N >::takeVector().
Referenced by llvm::buildModuleSummaryIndex().
|
static |
Definition at line 824 of file ModuleSummaryAnalysis.cpp.
References assert(), findFuncPointers(), and P.
Referenced by computeVariableSummary().
|
static |
Find function pointers referenced within the given vtable initializer (or subset of an initializer) I.
The starting offset of I within the vtable initializer is StartingOffset. Any discovered function pointers are added to VTableFuncs along with their cumulative offset within the initializer.
Definition at line 752 of file ModuleSummaryAnalysis.cpp.
References A(), assert(), llvm::CallingConv::C, llvm::cast(), DL, llvm::dyn_cast(), llvm::StructType::elements(), llvm::enumerate(), findFuncPointers(), llvm::StructLayout::getElementContainingOffset(), llvm::StructLayout::getElementOffset(), llvm::GlobalVariable::getInitializer(), llvm::Value::getType(), I, llvm::isa(), llvm::IsConstantOffsetFromGlobal(), LHS, llvm::Offset, and RHS.
Referenced by computeVTableFuncs(), and findFuncPointers().
|
static |
Definition at line 121 of file ModuleSummaryAnalysis.cpp.
References llvm::dyn_cast(), llvm::dyn_cast_if_present(), llvm::SmallVectorTemplateCommon< T, typename >::empty(), llvm::getValueProfDataFromInst(), I, llvm::SmallPtrSetImpl< PtrType >::insert(), llvm::isa(), llvm::MaxNumVTableAnnotations, llvm::SmallVectorImpl< T >::pop_back_val(), and llvm::SmallVectorTemplateBase< T, bool >::push_back().
Referenced by computeFunctionSummary(), and computeVariableSummary().
|
static |
Definition at line 180 of file ModuleSummaryAnalysis.cpp.
References llvm::CalleeInfo::Cold, llvm::CalleeInfo::Hot, llvm::ProfileSummaryInfo::isColdCount(), llvm::ProfileSummaryInfo::isHotCount(), llvm::CalleeInfo::None, and llvm::CalleeInfo::Unknown.
Referenced by computeFunctionSummary().
| INITIALIZE_PASS | ( | ImmutableModuleSummaryIndexWrapperPass | , |
| "module-summary-info" | , | ||
| "Module summary info" | , | ||
| false | , | ||
| true | ) |
Definition at line 1244 of file ModuleSummaryAnalysis.cpp.
References assert(), const, llvm::dyn_cast(), llvm::EnableMemProfIndirectCallSupport, if(), llvm::isa(), and llvm::mayHaveMemprofSummary().
| INITIALIZE_PASS_BEGIN | ( | ModuleSummaryIndexWrapperPass | , |
| "module-summary-analysis" | , | ||
| "Module Summary Analysis" | , | ||
| false | , | ||
| true | ) |
References INITIALIZE_PASS_DEPENDENCY.
|
static |
Definition at line 191 of file ModuleSummaryAnalysis.cpp.
References llvm::GlobalValue::hasLocalLinkage(), and llvm::GlobalValue::hasSection().
Referenced by computeAliasSummary(), computeFunctionSummary(), and computeVariableSummary().
|
static |
Definition at line 292 of file ModuleSummaryAnalysis.cpp.
References llvm::dyn_cast(), and I.
Referenced by computeFunctionSummary().
|
static |
Definition at line 299 of file ModuleSummaryAnalysis.cpp.
References llvm::dyn_cast(), and I.
Referenced by computeFunctionSummary().
Definition at line 311 of file ModuleSummaryAnalysis.cpp.
References assert(), F, and llvm::isa().
Referenced by computeFunctionSummary().
|
static |
Record vtable definition V for each type metadata it references.
Definition at line 848 of file ModuleSummaryAnalysis.cpp.
References llvm::cast(), llvm::dyn_cast(), and llvm::Offset.
Referenced by computeVariableSummary().
|
static |
Definition at line 940 of file ModuleSummaryAnalysis.cpp.
References llvm::GlobalValue::getGUIDAssumingExternalLinkage().
Referenced by llvm::buildModuleSummaryIndex().
| module summary Module Summary Analysis |
Definition at line 1187 of file ModuleSummaryAnalysis.cpp.
| module summary analysis |
Definition at line 1186 of file ModuleSummaryAnalysis.cpp.
| module summary Module Summary false |
Definition at line 1187 of file ModuleSummaryAnalysis.cpp.