LLVM  16.0.0git
Classes | Namespaces | Enumerations | Functions
CaptureTracking.h File Reference
#include "llvm/ADT/DenseMap.h"
#include "llvm/ADT/STLFunctionalExtras.h"
Include dependency graph for CaptureTracking.h:
This graph shows which files directly or indirectly include this file:

Go to the source code of this file.

Classes

class  llvm::SmallPtrSetImpl< PtrType >
 A templated base class for SmallPtrSet which provides the typesafe interface that is common across all small sizes. More...
 
struct  llvm::CaptureTracker
 This callback is used in conjunction with PointerMayBeCaptured. More...
 

Namespaces

 llvm
 This is an optimization pass for GlobalISel generic memory operations.
 

Enumerations

enum  llvm::UseCaptureKind { llvm::UseCaptureKind::NO_CAPTURE, llvm::UseCaptureKind::MAY_CAPTURE, llvm::UseCaptureKind::PASSTHROUGH }
 Types of use capture kinds, see DetermineUseCaptureKind. More...
 

Functions

unsigned llvm::getDefaultMaxUsesToExploreForCaptureTracking ()
 getDefaultMaxUsesToExploreForCaptureTracking - Return default value of the maximal number of uses to explore before giving up. More...
 
bool llvm::PointerMayBeCaptured (const Value *V, bool ReturnCaptures, bool StoreCaptures, unsigned MaxUsesToExplore=0)
 PointerMayBeCaptured - Return true if this pointer value may be captured by the enclosing function (which is required to exist). More...
 
bool llvm::PointerMayBeCaptured (const Value *V, bool ReturnCaptures, bool StoreCaptures, const SmallPtrSetImpl< const Value * > &EphValues, unsigned MaxUsesToExplore=0)
 Variant of the above function which accepts a set of Values that are ephemeral and cannot cause pointers to escape. More...
 
bool llvm::PointerMayBeCapturedBefore (const Value *V, bool ReturnCaptures, bool StoreCaptures, const Instruction *I, const DominatorTree *DT, bool IncludeI=false, unsigned MaxUsesToExplore=0, const LoopInfo *LI=nullptr)
 PointerMayBeCapturedBefore - Return true if this pointer value may be captured by the enclosing function (which is required to exist). More...
 
Instructionllvm::FindEarliestCapture (const Value *V, Function &F, bool ReturnCaptures, bool StoreCaptures, const DominatorTree &DT, const SmallPtrSetImpl< const Value * > &EphValues, unsigned MaxUsesToExplore=0)
 
UseCaptureKind llvm::DetermineUseCaptureKind (const Use &U, llvm::function_ref< bool(Value *, const DataLayout &)> IsDereferenceableOrNull)
 Determine what kind of capture behaviour U may exhibit. More...
 
void llvm::PointerMayBeCaptured (const Value *V, CaptureTracker *Tracker, unsigned MaxUsesToExplore=0)
 PointerMayBeCaptured - Visit the value and the values derived from it and find values which appear to be capturing the pointer value. More...
 
bool llvm::isNonEscapingLocalObject (const Value *V, SmallDenseMap< const Value *, bool, 8 > *IsCapturedCache=nullptr)
 Returns true if the pointer is to a function-local object that never escapes from the function. More...