LLVM: llvm::RuntimePointerChecking Class Reference (original) (raw)
Holds information about the memory runtime legality checks to verify that a group of pointers do not overlap. More...
#include "[llvm/Analysis/LoopAccessAnalysis.h](LoopAccessAnalysis%5F8h%5Fsource.html)"
| Public Member Functions | |
|---|---|
| RuntimePointerChecking (MemoryDepChecker &DC, ScalarEvolution *SE, std::optional< ScalarEvolution::LoopGuards > &LoopGuards) | |
| void | reset () |
| Reset the state of the pointer runtime information. | |
| LLVM_ABI void | insert (Loop *Lp, Value *Ptr, const SCEV *PtrExpr, Type *AccessTy, bool WritePtr, unsigned DepSetId, unsigned ASId, PredicatedScalarEvolution &PSE, bool NeedsFreeze) |
| Insert a pointer and calculate the start and end SCEVs. | |
| bool | empty () const |
| No run-time memory checking is necessary. | |
| LLVM_ABI void | generateChecks (MemoryDepChecker::DepCandidates &DepCands, bool UseDependencies) |
| Generate the checks and store it. | |
| const SmallVectorImpl< RuntimePointerCheck > & | getChecks () const |
| Returns the checks that generateChecks created. | |
| std::optional< ArrayRef< PointerDiffInfo > > | getDiffChecks () const |
| LLVM_ABI bool | needsChecking (const RuntimeCheckingPtrGroup &M, const RuntimeCheckingPtrGroup &N) const |
| Decide if we need to add a check between two groups of pointers, according to needsChecking. | |
| unsigned | getNumberOfChecks () const |
| Returns the number of run-time checks required according to needsChecking. | |
| LLVM_ABI void | print (raw_ostream &OS, unsigned Depth=0) const |
| Print the list run-time memory checks necessary. | |
| LLVM_ABI void | printChecks (raw_ostream &OS, const SmallVectorImpl< RuntimePointerCheck > &Checks, unsigned Depth=0) const |
| Print Checks. | |
| LLVM_ABI bool | needsChecking (unsigned I, unsigned J) const |
| Decide whether we need to issue a run-time check for pointer at index I and J to prove their independence. | |
| const PointerInfo & | getPointerInfo (unsigned PtrIdx) const |
| Return PointerInfo for pointer at index PtrIdx. | |
| ScalarEvolution * | getSE () const |
| Public Attributes | |
|---|---|
| bool | Need = false |
| This flag indicates if we need to add the runtime check. | |
| SmallVector< PointerInfo, 2 > | Pointers |
| Information about the pointers that may require checking. | |
| SmallVector< RuntimeCheckingPtrGroup, 2 > | CheckingGroups |
| Holds a partitioning of pointers into "check groups". |
| Friends | |
|---|---|
| struct | RuntimeCheckingPtrGroup |
Holds information about the memory runtime legality checks to verify that a group of pointers do not overlap.
Definition at line 503 of file LoopAccessAnalysis.h.
◆ arePointersInSamePartition()
Check if pointers are in the same partition.
PtrToPartition contains the partition number for pointers (-1 if the pointer belongs to multiple partitions).
Definition at line 728 of file LoopAccessAnalysis.cpp.
◆ empty()
| bool llvm::RuntimePointerChecking::empty ( ) const | inline |
|---|
◆ generateChecks()
◆ getChecks()
Returns the checks that generateChecks created.
They can be used to ensure no read/write accesses overlap across all loop iterations.
Definition at line 570 of file LoopAccessAnalysis.h.
◆ getDiffChecks()
◆ getNumberOfChecks()
| unsigned llvm::RuntimePointerChecking::getNumberOfChecks ( ) const | inline |
|---|
Returns the number of run-time checks required according to needsChecking.
Definition at line 592 of file LoopAccessAnalysis.h.
◆ getPointerInfo()
◆ getSE()
◆ insert()
◆ needsChecking() [1/2]
◆ needsChecking() [2/2]
◆ print()
◆ printChecks()
◆ reset()
| void llvm::RuntimePointerChecking::reset ( ) | inline |
|---|
◆ RuntimeCheckingPtrGroup
◆ CheckingGroups
◆ Need
bool llvm::RuntimePointerChecking::Need = false
◆ Pointers
The documentation for this class was generated from the following files:
- include/llvm/Analysis/LoopAccessAnalysis.h
- lib/Analysis/LoopAccessAnalysis.cpp