LLVM 22.0.0git
llvm::AssumptionCache Class Reference

A cache of @llvm.assume calls within a function. More...

#include "llvm/Analysis/AssumptionCache.h"

Classes

struct  ResultElem

Public Types

enum  : unsigned { ExprResultIdx = std::numeric_limits<unsigned>::max() }
 Value of ResultElem::Index indicating that the argument to the call of the llvm.assume. More...

Public Member Functions

 AssumptionCache (Function &F, TargetTransformInfo *TTI=nullptr)
 Construct an AssumptionCache from a function by scanning all of its instructions.
bool invalidate (Function &, const PreservedAnalyses &, FunctionAnalysisManager::Invalidator &)
 This cache is designed to be self-updating and so it should never be invalidated.
LLVM_ABI void registerAssumption (AssumeInst *CI)
 Add an @llvm.assume intrinsic to this function's cache.
LLVM_ABI void unregisterAssumption (AssumeInst *CI)
 Remove an @llvm.assume intrinsic from this function's cache if it has been added to the cache earlier.
LLVM_ABI void updateAffectedValues (AssumeInst *CI)
 Update the cache of values being affected by this assumption (i.e.
void clear ()
 Clear the cache of @llvm.assume intrinsics for a function.
MutableArrayRef< ResultElemassumptions ()
 Access the list of assumption handles currently tracked for this function.
MutableArrayRef< ResultElemassumptionsFor (const Value *V)
 Access the list of assumptions which affect this value.

Detailed Description

A cache of @llvm.assume calls within a function.

This cache provides fast lookup of assumptions within a function by caching them and amortizing the cost of scanning for them across all queries. Passes that create new assumptions are required to call registerAssumption() to register any new @llvm.assume calls that they create. Deletions of @llvm.assume calls do not require special handling.

Definition at line 43 of file AssumptionCache.h.

Member Enumeration Documentation

◆ anonymous enum

anonymous enum : unsigned

Value of ResultElem::Index indicating that the argument to the call of the llvm.assume.

Enumerator
ExprResultIdx 

Definition at line 47 of file AssumptionCache.h.

Constructor & Destructor Documentation

◆ AssumptionCache()

llvm::AssumptionCache::AssumptionCache ( Function & F,
TargetTransformInfo * TTI = nullptr )
inline

Construct an AssumptionCache from a function by scanning all of its instructions.

Definition at line 110 of file AssumptionCache.h.

Referenced by llvm::AssumptionAnalysis::run().

Member Function Documentation

◆ assumptions()

MutableArrayRef< ResultElem > llvm::AssumptionCache::assumptions ( )
inline

Access the list of assumption handles currently tracked for this function.

Note that these produce weak handles that may be null. The caller must handle that case. FIXME: We should replace this with pointee_iterator<filter_iterator<...>> when we can write that to filter out the null values. Then caller code will become simpler.

Definition at line 151 of file AssumptionCache.h.

Referenced by llvm::CodeMetrics::collectEphemeralValues(), llvm::CodeMetrics::collectEphemeralValues(), llvm::AssumptionPrinterPass::run(), and llvm::AlignmentFromAssumptionsPass::runImpl().

◆ assumptionsFor()

◆ clear()

void llvm::AssumptionCache::clear ( )
inline

Clear the cache of @llvm.assume intrinsics for a function.

It will be re-scanned the next time it is requested.

Definition at line 137 of file AssumptionCache.h.

◆ invalidate()

bool llvm::AssumptionCache::invalidate ( Function & ,
const PreservedAnalyses & ,
FunctionAnalysisManager::Invalidator &  )
inline

This cache is designed to be self-updating and so it should never be invalidated.

Definition at line 115 of file AssumptionCache.h.

◆ registerAssumption()

◆ unregisterAssumption()

void AssumptionCache::unregisterAssumption ( AssumeInst * CI)

Remove an @llvm.assume intrinsic from this function's cache if it has been added to the cache earlier.

Definition at line 110 of file AssumptionCache.cpp.

References assert(), llvm::AssumptionCache::ResultElem::Assume, llvm::erase(), and findAffectedValues().

◆ updateAffectedValues()

void AssumptionCache::updateAffectedValues ( AssumeInst * CI)

Update the cache of values being affected by this assumption (i.e.

the values about which this assumption provides information).

Definition at line 97 of file AssumptionCache.cpp.

References llvm::AssumptionCache::ResultElem::Assume, findAffectedValues(), llvm::AssumptionCache::ResultElem::Index, and llvm::none_of().

Referenced by registerAssumption().


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