LLVM: include/llvm/Transforms/IPO/Attributor.h File Reference (original) (raw)
Classes
struct
struct
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
} More...
struct
The data structure for the dependency graph. More...
struct
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
Wrapper for FunctionAnalysisManager. More...
struct
Data structure to hold cached (LLVM-IR) information. More...
struct
Configuration for the Attributor. More...
struct
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
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
Simple wrapper for a single bit (boolean) state. More...
struct
State for an integer range. More...
struct
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
Base struct for all "concrete attribute" deductions. More...
struct
} More...
struct
struct
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
struct
struct
An abstract interface for all nonnull attributes. More...
struct
An abstract interface for all nonnull attributes. More...
struct
An abstract attribute for norecurse. More...
struct
An abstract attribute for willreturn. More...
struct
An abstract attribute for undefined behavior. More...
struct
An abstract interface to determine reachability of point A to B. More...
struct
An abstract interface for all noalias attributes. More...
struct
An [AbstractAttribute](structllvm%5F1%5F1AbstractAttribute.html "Base struct for all "concrete attribute" deductions.") for nofree. More...
struct
An [AbstractAttribute](structllvm%5F1%5F1AbstractAttribute.html "Base struct for all "concrete attribute" deductions.") for noreturn. More...
struct
An abstract interface for liveness abstract attribute. More...
struct
State for dereferenceable attribute. More...
struct
An abstract interface for all dereferenceable attribute. More...
struct
An abstract interface for all align attributes. More...
struct
An abstract interface to track if a value leaves it's defining function instance. More...
struct
An abstract interface for all nocapture attributes. More...
struct
struct
An abstract interface for value simplify abstract attribute. More...
struct
struct
An abstract interface for privatizability. More...
struct
An abstract interface for memory access kind related attributes (readnone/readonly/writeonly). More...
struct
An abstract interface for all memory location attributes (readnone/argmemonly/inaccessiblememonly/inaccessibleorargmemonly). More...
struct
An abstract interface for range value analysis. More...
struct
llvm::PotentialValuesState< MemberTy >
A class for a set state. More...
struct
struct
llvm::DenormalFPMathState::DenormalState
struct
llvm::AAPotentialConstantValues
An abstract interface for potential values analysis. More...
struct
struct
An abstract interface for all noundef attributes. More...
struct
class
An Iterator for call edges, creates AACallEdges attributes in a lazy way. More...
struct
struct
An abstract state for querying live call edges. More...
struct
struct
llvm::GraphTraits< AACallGraphNode * >
struct
llvm::GraphTraits< AttributorCallGraph * >
struct
llvm::DOTGraphTraits< AttributorCallGraph * >
struct
struct
llvm::AAExecutionDomain::ExecutionDomainTy
Summary about the execution domain of a block or instruction. More...
struct
An abstract Attribute for computing reachability between functions. More...
struct
An abstract Attribute for determining the necessity of the convergent attribute. More...
struct
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
An access description. More...
struct
An abstract attribute for getting assumption information. More...
struct
An abstract attribute for getting all assumption underlying objects. More...
struct
An abstract interface for identifying pointers from which loads can be marked invariant. More...
struct
An abstract interface for address space information. More...
struct
An abstract interface for potential address space information. More...
struct
struct
An abstract interface for llvm::GlobalValue information interference. More...
struct
An abstract interface for indirect call information interference. More...
struct
An abstract Attribute for specializing "dynamic" components of "denormal-fp-math" and "denormal-fp-math-f32" to a known denormal mode. More...
Functions
llvm::AA::isGPU (const Module &M)
Return true iff M target a GPU (and we can use GPU AS reasoning).
llvm::AA::isNoSyncInst (Attributor &A, const Instruction &I, const AbstractAttribute &QueryingAA)
Return true if I is a nosync instruction.
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::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::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::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.
llvm::AA::operator<< (raw_ostream &OS, const RangeTy &R)
llvm::AA::operator== (const RangeTy &A, const RangeTy &B)
llvm::AA::operator!= (const RangeTy &A, const RangeTy &B)
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::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::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::AA::isAssumedReadOnly (Attributor &A, const IRPosition &IRP, const AbstractAttribute &QueryingAA, bool &IsKnown)
Return true if IRP is readonly.
llvm::AA::isAssumedReadNone (Attributor &A, const IRPosition &IRP, const AbstractAttribute &QueryingAA, bool &IsKnown)
Return true if IRP is readnone.
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::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::AA::isAssumedThreadLocalObject (Attributor &A, Value &Obj, const AbstractAttribute &QueryingAA)
Return true if Obj is assumed to be a thread local object.
llvm::AA::isPotentiallyAffectedByBarrier (Attributor &A, const Instruction &I, const AbstractAttribute &QueryingAA)
Return true if I is potentially affected by a barrier.
llvm::AA::isPotentiallyAffectedByBarrier (Attributor &A, ArrayRef< const Value * > Ptrs, const AbstractAttribute &QueryingAA, const Instruction *CtxI)
llvm::operator| (ChangeStatus l, ChangeStatus r)
Logic operators for the change status enum class.
llvm::operator|= (ChangeStatus &l, ChangeStatus r)
llvm::operator& (ChangeStatus l, ChangeStatus r)
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::operator<< (raw_ostream &OS, const AbstractAttribute &AA)
Forward declarations of output streams for debug purposes.
llvm::operator<< (raw_ostream &OS, ChangeStatus S)
Helpers to ease debugging through output streams and print calls.
llvm::operator<< (raw_ostream &OS, IRPosition::Kind)
llvm::operator<< (raw_ostream &OS, const IRPosition &)
llvm::operator<< (raw_ostream &OS, const AbstractState &State)
template<typename base_ty, base_ty BestState, base_ty WorstState>
llvm::operator<< (raw_ostream &OS, const IntegerStateBase< base_ty, BestState, WorstState > &S)
llvm::operator<< (raw_ostream &OS, const IntegerRangeState &State)
template
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::operator<< (raw_ostream &OS, const PotentialConstantIntValuesState &R)
llvm::operator<< (raw_ostream &OS, const PotentialLLVMValuesState &R)
llvm::operator<< (raw_ostream &, const AAPointerInfo::Access &)
template<Attribute::AttrKind AK, typename AAType = AbstractAttribute>
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.