LLVM: include/llvm/Transforms/IPO/Attributor.h File Reference (original) (raw)

Classes

struct

llvm::AA::ValueAndContext

struct

llvm::AA::RangeTy

Helper to represent an access offset and size, with logic to deal with uncertainty and check for overlapping accesses. More...

struct

llvm::DenseMapInfo< AA::ValueAndContext >

struct

llvm::DenseMapInfo< AA::ValueScope >

struct

llvm::DenseMapInfo< const AA::InstExclusionSetTy * >

struct

llvm::AADepGraphNode

} More...

struct

llvm::AADepGraph

The data structure for the dependency graph. More...

struct

llvm::IRPosition

Helper to describe and deal with positions in the LLVM-IR. More...

struct

llvm::DenseMapInfo< IRPosition >

Helper that allows IRPosition as a key in a DenseMap. More...

class

llvm::SubsumingPositionIterator

A visitor class for IR positions. More...

struct

llvm::AnalysisGetter

Wrapper for FunctionAnalysisManager. More...

struct

llvm::InformationCache

Data structure to hold cached (LLVM-IR) information. More...

struct

llvm::AttributorConfig

Configuration for the Attributor. More...

struct

llvm::Attributor

The fixpoint analysis framework that orchestrates the attribute deduction. More...

struct

llvm::Attributor::ArgumentReplacementInfo

Helper struct used in the communication between an abstract attribute (AA) that wants to change the signature of a function and the Attributor which applies the changes. More...

struct

llvm::AbstractState

An interface to query the internal state of an abstract attribute. More...

struct

llvm::IntegerStateBase< base_ty, BestState, WorstState >

Simple state with integers encoding. More...

struct

llvm::BitIntegerState< base_ty, BestState, WorstState >

Specialization of the integer state for a bit-wise encoding. More...

struct

llvm::IncIntegerState< base_ty, BestState, WorstState >

Specialization of the integer state for an increasing value, hence ~0u is the best state and 0 the worst. More...

struct

llvm::DecIntegerState< base_ty >

Specialization of the integer state for a decreasing value, hence 0 is the best state and ~0u the worst. More...

struct

llvm::BooleanState

Simple wrapper for a single bit (boolean) state. More...

struct

llvm::IntegerRangeState

State for an integer range. More...

struct

llvm::SetState< BaseTy >

Simple state for a set. More...

struct

llvm::SetState< BaseTy >::SetContents

A wrapper around a set that has semantics for handling unions and intersections with a "universal" set that contains all elements. More...

struct

llvm::StateWrapper< StateTy, BaseType, Ts >

Helper to tie a abstract state implementation to an abstract attribute. More...

struct

llvm::IRAttribute< AK, BaseType, AAType >

Helper class that provides common functionality to manifest IR attributes. More...

struct

llvm::AbstractAttribute

Base struct for all "concrete attribute" deductions. More...

struct

llvm::AttributorPass

} More...

struct

llvm::AttributorCGSCCPass

struct

llvm::AttributorLightPass

A more lightweight version of the Attributor which only runs attribute inference but no simplifications. More...

struct

llvm::AttributorLightCGSCCPass

A more lightweight version of the Attributor which only runs attribute inference but no simplifications. More...

struct

llvm::AANoUnwind

struct

llvm::AANoSync

struct

llvm::AAMustProgress

An abstract interface for all nonnull attributes. More...

struct

llvm::AANonNull

An abstract interface for all nonnull attributes. More...

struct

llvm::AANoRecurse

An abstract attribute for norecurse. More...

struct

llvm::AAWillReturn

An abstract attribute for willreturn. More...

struct

llvm::AAUndefinedBehavior

An abstract attribute for undefined behavior. More...

struct

llvm::AAIntraFnReachability

An abstract interface to determine reachability of point A to B. More...

struct

llvm::AANoAlias

An abstract interface for all noalias attributes. More...

struct

llvm::AANoFree

An [AbstractAttribute](structllvm%5F1%5F1AbstractAttribute.html "Base struct for all "concrete attribute" deductions.") for nofree. More...

struct

llvm::AANoReturn

An [AbstractAttribute](structllvm%5F1%5F1AbstractAttribute.html "Base struct for all "concrete attribute" deductions.") for noreturn. More...

struct

llvm::AAIsDead

An abstract interface for liveness abstract attribute. More...

struct

llvm::DerefState

State for dereferenceable attribute. More...

struct

llvm::AADereferenceable

An abstract interface for all dereferenceable attribute. More...

struct

llvm::AAAlign

An abstract interface for all align attributes. More...

struct

llvm::AAInstanceInfo

An abstract interface to track if a value leaves it's defining function instance. More...

struct

llvm::AANoCapture

An abstract interface for all nocapture attributes. More...

struct

llvm::ValueSimplifyStateType

struct

llvm::AAValueSimplify

An abstract interface for value simplify abstract attribute. More...

struct

llvm::AAHeapToStack

struct

llvm::AAPrivatizablePtr

An abstract interface for privatizability. More...

struct

llvm::AAMemoryBehavior

An abstract interface for memory access kind related attributes (readnone/readonly/writeonly). More...

struct

llvm::AAMemoryLocation

An abstract interface for all memory location attributes (readnone/argmemonly/inaccessiblememonly/inaccessibleorargmemonly). More...

struct

llvm::AAValueConstantRange

An abstract interface for range value analysis. More...

struct

llvm::PotentialValuesState< MemberTy >

A class for a set state. More...

struct

llvm::DenormalFPMathState

struct

llvm::DenormalFPMathState::DenormalState

struct

llvm::AAPotentialConstantValues

An abstract interface for potential values analysis. More...

struct

llvm::AAPotentialValues

struct

llvm::AANoUndef

An abstract interface for all noundef attributes. More...

struct

llvm::AANoFPClass

class

llvm::AACallEdgeIterator

An Iterator for call edges, creates AACallEdges attributes in a lazy way. More...

struct

llvm::AACallGraphNode

struct

llvm::AACallEdges

An abstract state for querying live call edges. More...

struct

llvm::AttributorCallGraph

struct

llvm::GraphTraits< AACallGraphNode * >

struct

llvm::GraphTraits< AttributorCallGraph * >

struct

llvm::DOTGraphTraits< AttributorCallGraph * >

struct

llvm::AAExecutionDomain

struct

llvm::AAExecutionDomain::ExecutionDomainTy

Summary about the execution domain of a block or instruction. More...

struct

llvm::AAInterFnReachability

An abstract Attribute for computing reachability between functions. More...

struct

llvm::AANonConvergent

An abstract Attribute for determining the necessity of the convergent attribute. More...

struct

llvm::AAPointerInfo

An abstract interface for struct information. More...

struct

llvm::AAPointerInfo::OffsetInfo

A helper containing a list of offsets computed for a Use. More...

struct

llvm::AAPointerInfo::RangeList

A container for a list of ranges. More...

struct

llvm::AAPointerInfo::Access

An access description. More...

struct

llvm::AAAssumptionInfo

An abstract attribute for getting assumption information. More...

struct

llvm::AAUnderlyingObjects

An abstract attribute for getting all assumption underlying objects. More...

struct

llvm::AAInvariantLoadPointer

An abstract interface for identifying pointers from which loads can be marked invariant. More...

struct

llvm::AAAddressSpace

An abstract interface for address space information. More...

struct

llvm::AANoAliasAddrSpace

An abstract interface for potential address space information. More...

struct

llvm::AAAllocationInfo

struct

llvm::AAGlobalValueInfo

An abstract interface for llvm::GlobalValue information interference. More...

struct

llvm::AAIndirectCallInfo

An abstract interface for indirect call information interference. More...

struct

llvm::AADenormalFPMath

An abstract Attribute for specializing "dynamic" components of "denormal-fp-math" and "denormal-fp-math-f32" to a known denormal mode. More...

Functions

LLVM_ABI bool

llvm::AA::isGPU (const Module &M)

Return true iff M target a GPU (and we can use GPU AS reasoning).

LLVM_ABI bool

llvm::AA::isNoSyncInst (Attributor &A, const Instruction &I, const AbstractAttribute &QueryingAA)

Return true if I is a nosync instruction.

LLVM_ABI bool

llvm::AA::isDynamicallyUnique (Attributor &A, const AbstractAttribute &QueryingAA, const Value &V, bool ForAnalysisOnly=true)

Return true if V is dynamically unique, that is, there are no two "instances" of V at runtime with different values.

LLVM_ABI bool

llvm::AA::isValidInScope (const Value &V, const Function *Scope)

Return true if V is a valid value in Scope, that is a constant or an instruction/argument of Scope.

LLVM_ABI bool

llvm::AA::isValidAtPosition (const ValueAndContext &VAC, InformationCache &InfoCache)

Return true if the value of VAC is a valid at the position of VAC, that is a constant, an argument of the same function, or an instruction in that function that dominates the position.

LLVM_ABI Value *

llvm::AA::getWithType (Value &V, Type &Ty)

Try to convert V to type Ty without introducing new instructions.

LLVM_ABI std::optional< Value * >

llvm::AA::combineOptionalValuesInAAValueLatice (const std::optional< Value * > &A, const std::optional< Value * > &B, Type *Ty)

Return the combination of A and B such that the result is a possible value of both.

raw_ostream &

llvm::AA::operator<< (raw_ostream &OS, const RangeTy &R)

bool

llvm::AA::operator== (const RangeTy &A, const RangeTy &B)

bool

llvm::AA::operator!= (const RangeTy &A, const RangeTy &B)

LLVM_ABI Constant *

llvm::AA::getInitialValueForObj (Attributor &A, const AbstractAttribute &QueryingAA, Value &Obj, Type &Ty, const TargetLibraryInfo *TLI, const DataLayout &DL, RangeTy *RangePtr=nullptr)

Return the initial value of Obj with type Ty if that is a constant.

LLVM_ABI bool

llvm::AA::getPotentiallyLoadedValues (Attributor &A, LoadInst &LI, SmallSetVector< Value *, 4 > &PotentialValues, SmallSetVector< Instruction *, 4 > &PotentialValueOrigins, const AbstractAttribute &QueryingAA, bool &UsedAssumedInformation, bool OnlyExact=false)

Collect all potential values LI could read into PotentialValues.

LLVM_ABI bool

llvm::AA::getPotentialCopiesOfStoredValue (Attributor &A, StoreInst &SI, SmallSetVector< Value *, 4 > &PotentialCopies, const AbstractAttribute &QueryingAA, bool &UsedAssumedInformation, bool OnlyExact=false)

Collect all potential values of the one stored by [SI](namespacellvm%5F1%5F1SI.html) into PotentialCopies.

LLVM_ABI bool

llvm::AA::isAssumedReadOnly (Attributor &A, const IRPosition &IRP, const AbstractAttribute &QueryingAA, bool &IsKnown)

Return true if IRP is readonly.

LLVM_ABI bool

llvm::AA::isAssumedReadNone (Attributor &A, const IRPosition &IRP, const AbstractAttribute &QueryingAA, bool &IsKnown)

Return true if IRP is readnone.

LLVM_ABI bool

llvm::AA::isPotentiallyReachable (Attributor &A, const Instruction &FromI, const Instruction &ToI, const AbstractAttribute &QueryingAA, const AA::InstExclusionSetTy *ExclusionSet=nullptr, std::function< bool(const Function &F)> GoBackwardsCB=nullptr)

Return true if ToI is potentially reachable from FromI without running into any instruction in ExclusionSet The two instructions do not need to be in the same function.

LLVM_ABI bool

llvm::AA::isPotentiallyReachable (Attributor &A, const Instruction &FromI, const Function &ToFn, const AbstractAttribute &QueryingAA, const AA::InstExclusionSetTy *ExclusionSet=nullptr, std::function< bool(const Function &F)> GoBackwardsCB=nullptr)

Same as above but it is sufficient to reach any instruction in ToFn.

LLVM_ABI bool

llvm::AA::isAssumedThreadLocalObject (Attributor &A, Value &Obj, const AbstractAttribute &QueryingAA)

Return true if Obj is assumed to be a thread local object.

LLVM_ABI bool

llvm::AA::isPotentiallyAffectedByBarrier (Attributor &A, const Instruction &I, const AbstractAttribute &QueryingAA)

Return true if I is potentially affected by a barrier.

LLVM_ABI bool

llvm::AA::isPotentiallyAffectedByBarrier (Attributor &A, ArrayRef< const Value * > Ptrs, const AbstractAttribute &QueryingAA, const Instruction *CtxI)

LLVM_ABI ChangeStatus

llvm::operator| (ChangeStatus l, ChangeStatus r)

Logic operators for the change status enum class.

LLVM_ABI ChangeStatus &

llvm::operator|= (ChangeStatus &l, ChangeStatus r)

LLVM_ABI ChangeStatus

llvm::operator& (ChangeStatus l, ChangeStatus r)

LLVM_ABI ChangeStatus &

llvm::operator&= (ChangeStatus &l, ChangeStatus r)

llvm::DEBUG_COUNTER (NumAbstractAttributes, "num-abstract-attributes", "How many AAs should be initialized")

A debug counter to limit the number of AAs created.

LLVM_ABI raw_ostream &

llvm::operator<< (raw_ostream &OS, const AbstractAttribute &AA)

Forward declarations of output streams for debug purposes.

LLVM_ABI raw_ostream &

llvm::operator<< (raw_ostream &OS, ChangeStatus S)

Helpers to ease debugging through output streams and print calls.

LLVM_ABI raw_ostream &

llvm::operator<< (raw_ostream &OS, IRPosition::Kind)

LLVM_ABI raw_ostream &

llvm::operator<< (raw_ostream &OS, const IRPosition &)

LLVM_ABI raw_ostream &

llvm::operator<< (raw_ostream &OS, const AbstractState &State)

template<typename base_ty, base_ty BestState, base_ty WorstState>

raw_ostream &

llvm::operator<< (raw_ostream &OS, const IntegerStateBase< base_ty, BestState, WorstState > &S)

LLVM_ABI raw_ostream &

llvm::operator<< (raw_ostream &OS, const IntegerRangeState &State)

template

ChangeStatus

llvm::clampStateAndIndicateChange (StateType &S, const StateType &R)

Helper function to clamp a state S of type StateType with the information in R and indicate/return if S did change (as-in update is required to be run again).

LLVM_ABI raw_ostream &

llvm::operator<< (raw_ostream &OS, const PotentialConstantIntValuesState &R)

LLVM_ABI raw_ostream &

llvm::operator<< (raw_ostream &OS, const PotentialLLVMValuesState &R)

LLVM_ABI raw_ostream &

llvm::operator<< (raw_ostream &, const AAPointerInfo::Access &)

template<Attribute::AttrKind AK, typename AAType = AbstractAttribute>

bool

llvm::AA::hasAssumedIRAttr (Attributor &A, const AbstractAttribute *QueryingAA, const IRPosition &IRP, DepClassTy DepClass, bool &IsKnown, bool IgnoreSubsumingPositions=false, const AAType **AAPtr=nullptr)

Helper to avoid creating an AA for IR Attributes that might already be set.