LLVM 22.0.0git
llvm::AnalysisUsage Class Reference

Represent the analysis usage information of a pass. More...

#include "llvm/PassAnalysisSupport.h"

Public Types

using VectorType = SmallVectorImpl<AnalysisID>

Public Member Functions

 AnalysisUsage ()=default
LLVM_ABI AnalysisUsageaddPreserved (StringRef Arg)
 Add the Pass with the specified argument string to the set of analyses preserved by this pass.
void setPreservesAll ()
 Set by analyses that do not transform their input at all.
bool getPreservesAll () const
 Determine whether a pass said it does not transform its input at all.
LLVM_ABI void setPreservesCFG ()
 This function should be called by the pass, iff they do not:
const VectorTypegetRequiredSet () const
const VectorTypegetRequiredTransitiveSet () const
const VectorTypegetPreservedSet () const
const VectorTypegetUsedSet () const
LLVM_ABI AnalysisUsageaddRequiredID (const void *ID)
LLVM_ABI AnalysisUsageaddRequiredID (char &ID)
template<class PassClass>
AnalysisUsageaddRequired ()
LLVM_ABI AnalysisUsageaddRequiredTransitiveID (char &ID)
template<class PassClass>
AnalysisUsageaddRequiredTransitive ()
AnalysisUsageaddPreservedID (const void *ID)
AnalysisUsageaddPreservedID (char &ID)
template<class PassClass>
AnalysisUsageaddPreserved ()
 Add the specified Pass class to the set of analyses preserved by this pass.
AnalysisUsageaddUsedIfAvailableID (const void *ID)
AnalysisUsageaddUsedIfAvailableID (char &ID)
template<class PassClass>
AnalysisUsageaddUsedIfAvailable ()
 Add the specified Pass class to the set of analyses used by this pass.

Detailed Description

Represent the analysis usage information of a pass.

This tracks analyses that the pass REQUIRES (must be available when the pass runs), REQUIRES TRANSITIVE (must be available throughout the lifetime of the pass), and analyses that the pass PRESERVES (the pass does not invalidate the results of these analyses). This information is provided by a pass to the Pass infrastructure through the getAnalysisUsage virtual function.

Definition at line 48 of file PassAnalysisSupport.h.

Member Typedef Documentation

◆ VectorType

Constructor & Destructor Documentation

◆ AnalysisUsage()

Member Function Documentation

◆ addPreserved() [1/2]

◆ addPreserved() [2/2]

AnalysisUsage & AnalysisUsage::addPreserved ( StringRef Arg)

Add the Pass with the specified argument string to the set of analyses preserved by this pass.

If no such Pass exists, do nothing. This can be useful when a pass is trivially preserved, but may not be linked in. Be careful about spelling!

Definition at line 276 of file Pass.cpp.

◆ addPreservedID() [1/2]

AnalysisUsage & llvm::AnalysisUsage::addPreservedID ( char & ID)
inline

Definition at line 93 of file PassAnalysisSupport.h.

References AnalysisUsage().

◆ addPreservedID() [2/2]

AnalysisUsage & llvm::AnalysisUsage::addPreservedID ( const void * ID)
inline

Add the specified ID to the set of analyses preserved by this pass.

Definition at line 89 of file PassAnalysisSupport.h.

References AnalysisUsage().

Referenced by llvm::LiveIntervalsWrapperPass::getAnalysisUsage(), llvm::RABasic::getAnalysisUsage(), and llvm::getLoopAnalysisUsage().

◆ addRequired()

template<class PassClass>
AnalysisUsage & llvm::AnalysisUsage::addRequired ( )
inline

Definition at line 76 of file PassAnalysisSupport.h.

References addRequiredID(), and AnalysisUsage().

Referenced by AMDGPUAnnotateUniformValuesLegacy::getAnalysisUsage(), AMDGPULateCodeGenPrepareLegacy::getAnalysisUsage(), llvm::AMDGPUAsmPrinter::getAnalysisUsage(), llvm::AMDGPUDAGToDAGISelLegacy::getAnalysisUsage(), llvm::ARMBlockPlacement::getAnalysisUsage(), llvm::AsmPrinter::getAnalysisUsage(), llvm::BlockFrequencyInfoWrapperPass::getAnalysisUsage(), llvm::BranchProbabilityInfoWrapperPass::getAnalysisUsage(), llvm::BreakFalseDeps::getAnalysisUsage(), llvm::CallGraphSCCPass::getAnalysisUsage(), llvm::DominanceFrontierWrapperPass::getAnalysisUsage(), llvm::DOTGraphTraitsModulePrinterWrapperPass< AnalysisT, IsSimple, GraphT, AnalysisGraphTraitsT >::getAnalysisUsage(), llvm::DOTGraphTraitsModuleViewerWrapperPass< AnalysisT, IsSimple, GraphT, AnalysisGraphTraitsT >::getAnalysisUsage(), llvm::DOTGraphTraitsPrinterWrapperPass< AnalysisT, IsSimple, GraphT, AnalysisGraphTraitsT >::getAnalysisUsage(), llvm::DOTGraphTraitsViewerWrapperPass< AnalysisT, IsSimple, GraphT, AnalysisGraphTraitsT >::getAnalysisUsage(), llvm::dxil::ShaderFlagsAnalysisWrapper::getAnalysisUsage(), llvm::ExecutionDomainFix::getAnalysisUsage(), llvm::GCNRegPressurePrinter::getAnalysisUsage(), llvm::GlobalsAAWrapperPass::getAnalysisUsage(), llvm::gvn::GVNLegacyPass::getAnalysisUsage(), llvm::InstructionCombiningPass::getAnalysisUsage(), llvm::InstructionSelect::getAnalysisUsage(), llvm::IRTranslator::getAnalysisUsage(), llvm::IVUsersWrapperPass::getAnalysisUsage(), llvm::LazyMachineBlockFrequencyInfoPass::getAnalysisUsage(), llvm::LazyValueInfoWrapperPass::getAnalysisUsage(), llvm::Legalizer::getAnalysisUsage(), llvm::LoadStoreOpt::getAnalysisUsage(), llvm::Localizer::getAnalysisUsage(), llvm::MachineBlockFrequencyInfoWrapperPass::getAnalysisUsage(), llvm::MachineDominanceFrontier::getAnalysisUsage(), llvm::MachineFunctionPass::getAnalysisUsage(), llvm::MachineLoopInfoWrapperPass::getAnalysisUsage(), llvm::MachineOptimizationRemarkEmitterPass::getAnalysisUsage(), llvm::MachinePipeliner::getAnalysisUsage(), llvm::MachineRegionInfoPass::getAnalysisUsage(), llvm::MachineTraceMetricsWrapperPass::getAnalysisUsage(), llvm::MemoryDependenceWrapperPass::getAnalysisUsage(), llvm::MipsSEDAGToDAGISelLegacy::getAnalysisUsage(), llvm::ModuleSummaryIndexWrapperPass::getAnalysisUsage(), llvm::NVPTXAsmPrinter::getAnalysisUsage(), llvm::OptimizationRemarkEmitterWrapperPass::getAnalysisUsage(), llvm::RABasic::getAnalysisUsage(), llvm::RegAllocScoring::getAnalysisUsage(), llvm::RegBankSelect::getAnalysisUsage(), llvm::RegionInfoPass::getAnalysisUsage(), llvm::RegToMemWrapperPass::getAnalysisUsage(), llvm::ReplaceWithVeclibLegacy::getAnalysisUsage(), llvm::SCEVAAWrapperPass::getAnalysisUsage(), llvm::SelectionDAGISelLegacy::getAnalysisUsage(), llvm::SPIRVConvergenceRegionAnalysisWrapperPass::getAnalysisUsage(), llvm::StackProtector::getAnalysisUsage(), llvm::StackSafetyGlobalInfoWrapperPass::getAnalysisUsage(), llvm::WebAssemblyExceptionInfo::getAnalysisUsage(), SIAnnotateControlFlowLegacy::getAnalysisUsage(), SILowerI1CopiesLegacy::getAnalysisUsage(), StaticDataAnnotator::getAnalysisUsage(), StaticDataSplitter::getAnalysisUsage(), llvm::getLoopAnalysisUsage(), INITIALIZE_PASS(), and INITIALIZE_PASS().

◆ addRequiredID() [1/2]

AnalysisUsage & AnalysisUsage::addRequiredID ( char & ID)

Definition at line 289 of file Pass.cpp.

◆ addRequiredID() [2/2]

AnalysisUsage & AnalysisUsage::addRequiredID ( const void * ID)

Add the specified ID to the required set of the usage info for a pass.

Definition at line 284 of file Pass.cpp.

Referenced by addRequired(), llvm::RABasic::getAnalysisUsage(), and llvm::getLoopAnalysisUsage().

◆ addRequiredTransitive()

◆ addRequiredTransitiveID()

AnalysisUsage & AnalysisUsage::addRequiredTransitiveID ( char & ID)

◆ addUsedIfAvailable()

template<class PassClass>
AnalysisUsage & llvm::AnalysisUsage::addUsedIfAvailable ( )
inline

Add the specified Pass class to the set of analyses used by this pass.

Definition at line 118 of file PassAnalysisSupport.h.

References AnalysisUsage().

Referenced by llvm::AAResultsWrapperPass::getAnalysisUsage().

◆ addUsedIfAvailableID() [1/2]

AnalysisUsage & llvm::AnalysisUsage::addUsedIfAvailableID ( char & ID)
inline

Definition at line 112 of file PassAnalysisSupport.h.

References AnalysisUsage().

◆ addUsedIfAvailableID() [2/2]

AnalysisUsage & llvm::AnalysisUsage::addUsedIfAvailableID ( const void * ID)
inline

Add the specified ID to the set of analyses used by this pass if they are available..

Definition at line 108 of file PassAnalysisSupport.h.

References AnalysisUsage().

◆ getPreservedSet()

◆ getPreservesAll()

bool llvm::AnalysisUsage::getPreservesAll ( ) const
inline

Determine whether a pass said it does not transform its input at all.

Definition at line 134 of file PassAnalysisSupport.h.

Referenced by llvm::PMDataManager::preserveHigherLevelAnalysis(), and llvm::PMDataManager::removeNotPreservedAnalysis().

◆ getRequiredSet()

◆ getRequiredTransitiveSet()

const VectorType & llvm::AnalysisUsage::getRequiredTransitiveSet ( ) const
inline

Definition at line 146 of file PassAnalysisSupport.h.

Referenced by llvm::PMTopLevelManager::setLastUser().

◆ getUsedSet()

const VectorType & llvm::AnalysisUsage::getUsedSet ( ) const
inline

◆ setPreservesAll()

void llvm::AnalysisUsage::setPreservesAll ( )
inline

Set by analyses that do not transform their input at all.

Definition at line 131 of file PassAnalysisSupport.h.

Referenced by AMDGPUAnnotateUniformValuesLegacy::getAnalysisUsage(), llvm::AAResultsWrapperPass::getAnalysisUsage(), llvm::AMDGPUAAWrapperPass::getAnalysisUsage(), llvm::AMDGPUArgumentUsageInfo::getAnalysisUsage(), llvm::AMDGPUResourceUsageAnalysisWrapperPass::getAnalysisUsage(), llvm::AsmPrinter::getAnalysisUsage(), llvm::AssignmentTrackingAnalysis::getAnalysisUsage(), llvm::BasicAAWrapperPass::getAnalysisUsage(), llvm::BlockFrequencyInfoWrapperPass::getAnalysisUsage(), llvm::BranchProbabilityInfoWrapperPass::getAnalysisUsage(), llvm::BreakFalseDeps::getAnalysisUsage(), llvm::CallGraphWrapperPass::getAnalysisUsage(), llvm::CFIFixup::getAnalysisUsage(), llvm::DependenceAnalysisWrapperPass::getAnalysisUsage(), llvm::DominanceFrontierWrapperPass::getAnalysisUsage(), llvm::DominatorTreeWrapperPass::getAnalysisUsage(), llvm::DOTGraphTraitsModulePrinterWrapperPass< AnalysisT, IsSimple, GraphT, AnalysisGraphTraitsT >::getAnalysisUsage(), llvm::DOTGraphTraitsModuleViewerWrapperPass< AnalysisT, IsSimple, GraphT, AnalysisGraphTraitsT >::getAnalysisUsage(), llvm::DOTGraphTraitsPrinterWrapperPass< AnalysisT, IsSimple, GraphT, AnalysisGraphTraitsT >::getAnalysisUsage(), llvm::DOTGraphTraitsViewerWrapperPass< AnalysisT, IsSimple, GraphT, AnalysisGraphTraitsT >::getAnalysisUsage(), llvm::DummyCGSCCPass::getAnalysisUsage(), llvm::dxil::RootSignatureAnalysisWrapper::getAnalysisUsage(), llvm::dxil::ShaderFlagsAnalysisWrapper::getAnalysisUsage(), llvm::DXILMetadataAnalysisWrapperPass::getAnalysisUsage(), llvm::DXILResourceBindingWrapperPass::getAnalysisUsage(), llvm::DXILResourceWrapperPass::getAnalysisUsage(), llvm::ExecutionDomainFix::getAnalysisUsage(), llvm::ExternalAAWrapperPass::getAnalysisUsage(), llvm::GCNRegPressurePrinter::getAnalysisUsage(), llvm::GISelCSEAnalysisWrapperPass::getAnalysisUsage(), llvm::GISelValueTrackingAnalysisLegacy::getAnalysisUsage(), llvm::GlobalsAAWrapperPass::getAnalysisUsage(), llvm::ImmutableModuleSummaryIndexWrapperPass::getAnalysisUsage(), llvm::IRSimilarityIdentifierWrapperPass::getAnalysisUsage(), llvm::IVUsersWrapperPass::getAnalysisUsage(), llvm::LazyBlockFrequencyInfoPass::getAnalysisUsage(), llvm::LazyBranchProbabilityInfoPass::getAnalysisUsage(), llvm::LazyMachineBlockFrequencyInfoPass::getAnalysisUsage(), llvm::LazyValueInfoWrapperPass::getAnalysisUsage(), llvm::LCSSAVerificationPass::getAnalysisUsage(), llvm::LoadStoreOpt::getAnalysisUsage(), llvm::LoopInfoWrapperPass::getAnalysisUsage(), llvm::MachineBlockFrequencyInfoWrapperPass::getAnalysisUsage(), llvm::MachineBranchProbabilityInfoWrapperPass::getAnalysisUsage(), llvm::MachineDominanceFrontier::getAnalysisUsage(), llvm::MachineDominatorTreeWrapperPass::getAnalysisUsage(), llvm::MachineLoopInfoWrapperPass::getAnalysisUsage(), llvm::MachineOptimizationRemarkEmitterPass::getAnalysisUsage(), llvm::MachinePostDominatorTreeWrapperPass::getAnalysisUsage(), llvm::MachineRegionInfoPass::getAnalysisUsage(), llvm::MachineTraceMetricsWrapperPass::getAnalysisUsage(), llvm::MemoryDependenceWrapperPass::getAnalysisUsage(), llvm::MemorySSAWrapperPass::getAnalysisUsage(), llvm::ModuleSummaryIndexWrapperPass::getAnalysisUsage(), llvm::NVPTXAAWrapperPass::getAnalysisUsage(), llvm::OptimizationRemarkEmitterWrapperPass::getAnalysisUsage(), llvm::PhiValuesWrapperPass::getAnalysisUsage(), llvm::PostDominatorTreeWrapperPass::getAnalysisUsage(), llvm::ProfileSummaryInfoWrapperPass::getAnalysisUsage(), llvm::ReachingDefAnalysis::getAnalysisUsage(), llvm::RegAllocEvictionAdvisorAnalysisLegacy::getAnalysisUsage(), llvm::RegAllocPriorityAdvisorAnalysisLegacy::getAnalysisUsage(), llvm::RegAllocScoring::getAnalysisUsage(), llvm::RegionInfoPass::getAnalysisUsage(), llvm::RegToMemWrapperPass::getAnalysisUsage(), llvm::ScalarEvolutionWrapperPass::getAnalysisUsage(), llvm::SCEVAAWrapperPass::getAnalysisUsage(), llvm::ScopedNoAliasAAWrapperPass::getAnalysisUsage(), llvm::SPIRVConvergenceRegionAnalysisWrapperPass::getAnalysisUsage(), llvm::StackSafetyGlobalInfoWrapperPass::getAnalysisUsage(), llvm::StackSafetyInfoWrapperPass::getAnalysisUsage(), llvm::StaticDataProfileInfoWrapperPass::getAnalysisUsage(), llvm::TypeBasedAAWrapperPass::getAnalysisUsage(), llvm::VirtRegMapWrapperLegacy::getAnalysisUsage(), llvm::WebAssemblyExceptionInfo::getAnalysisUsage(), StaticDataAnnotator::getAnalysisUsage(), and StaticDataSplitter::getAnalysisUsage().

◆ setPreservesCFG()

void AnalysisUsage::setPreservesCFG ( )

This function should be called by the pass, iff they do not:

  1. Add or remove basic blocks from the function
  2. Modify terminator instructions in any way.

This function annotates the AnalysisUsage info object to say that analyses that only depend on the CFG are preserved by this pass.

Definition at line 270 of file Pass.cpp.

Referenced by AMDGPULateCodeGenPrepareLegacy::getAnalysisUsage(), llvm::InstructionCombiningPass::getAnalysisUsage(), llvm::LiveIntervalsWrapperPass::getAnalysisUsage(), llvm::RABasic::getAnalysisUsage(), llvm::ReplaceWithVeclibLegacy::getAnalysisUsage(), RemoveLoadsIntoFakeUsesLegacy::getAnalysisUsage(), and SILowerI1CopiesLegacy::getAnalysisUsage().


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