LLVM  6.0.0svn
Public Member Functions | List of all members
llvm::CaptureTracker Struct Referenceabstract

This callback is used in conjunction with PointerMayBeCaptured. More...

#include "llvm/Analysis/CaptureTracking.h"

Public Member Functions

virtual ~CaptureTracker ()
 
virtual void tooManyUses ()=0
 tooManyUses - The depth of traversal has breached a limit. More...
 
virtual bool shouldExplore (const Use *U)
 shouldExplore - This is the use of a value derived from the pointer. More...
 
virtual bool captured (const Use *U)=0
 captured - Information about the pointer was captured by the user of use U. More...
 

Detailed Description

This callback is used in conjunction with PointerMayBeCaptured.

In addition to the interface here, you'll need to provide your own getters to see whether anything was captured.

Definition at line 55 of file CaptureTracking.h.

Constructor & Destructor Documentation

◆ ~CaptureTracker()

CaptureTracker::~CaptureTracker ( )
virtual

Definition at line 33 of file CaptureTracking.cpp.

Member Function Documentation

◆ captured()

virtual bool llvm::CaptureTracker::captured ( const Use U)
pure virtual

captured - Information about the pointer was captured by the user of use U.

Return true to stop the traversal or false to continue looking for more capturing instructions.

Referenced by llvm::PointerMayBeCaptured(), and shouldExplore().

◆ shouldExplore()

bool CaptureTracker::shouldExplore ( const Use U)
virtual

shouldExplore - This is the use of a value derived from the pointer.

To prune the search (ie., assume that none of its users could possibly capture) return false. To search it, return true.

U->getUser() is always an Instruction.

Definition at line 35 of file CaptureTracking.cpp.

References llvm::SmallVectorImpl< T >::append(), captured(), llvm::DominatorTree::dominates(), llvm::Function::getEntryBlock(), llvm::TerminatorInst::getNumSuccessors(), llvm::Instruction::getParent(), llvm::BasicBlock::getParent(), llvm::BasicBlock::getTerminator(), I, llvm::isPotentiallyReachable(), llvm::isPotentiallyReachableFromMany(), llvm::DominatorTree::isReachableFromEntry(), llvm::succ_begin(), llvm::succ_end(), and tooManyUses().

Referenced by llvm::PointerMayBeCaptured().

◆ tooManyUses()

virtual void llvm::CaptureTracker::tooManyUses ( )
pure virtual

tooManyUses - The depth of traversal has breached a limit.

There may be capturing instructions that will not be passed into captured().

Referenced by llvm::PointerMayBeCaptured(), and shouldExplore().


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