class PtrUseVisitor
Declaration
template <typename DerivedT>
class PtrUseVisitor : public PtrUseVisitorBase { /* full declaration omitted */ };
Description
A base class for visitors over the uses of a pointer value. Once constructed, a user can call \c visit on a pointer value, and this will walk its uses and visit each instruction using an InstVisitor. It also provides visit methods which will recurse through any pointer-to-pointer transformations such as GEPs and bitcasts. During the visit, the current Use* being visited is available to the subclass, as well as the current offset from the original base pointer if known. The recursive visit of uses is accomplished with a worklist, so the only ordering guarantee is that an instruction is visited before any uses of it are visited. Note that this does *not* mean before any of its users are visited! This is because users can be visited multiple times due to multiple, different uses of pointers derived from the same base. A particular Use will only be visited once, but a User may be visited multiple times, once per Use. This visits may notably have different offsets. All visit methods on the underlying InstVisitor return a boolean. This return short-circuits the visit, stopping it immediately. FIXME: Generalize this for all values rather than just instructions.
Declared at: llvm/include/llvm/Analysis/PtrUseVisitor.h:206
Inherits from: PtrUseVisitorBase
Templates
- DerivedT
Member Variables
Inherited from PtrUseVisitorBase:
- protected DL
- protected PI
- protected Worklist
- protected VisitedUses
- protected U
- protected IsOffsetKnown
- protected Offset
Method Overview
- public PtrUseVisitor<DerivedT>(const llvm::DataLayout & DL)
- protected void visitAddrSpaceCastInst(llvm::AddrSpaceCastInst & ASC)
- protected void visitBitCastInst(llvm::BitCastInst & BC)
- protected void visitCallSite(llvm::CallSite CS)
- protected void visitDbgInfoIntrinsic(llvm::DbgInfoIntrinsic & I)
- protected void visitGetElementPtrInst(llvm::GetElementPtrInst & GEPI)
- protected void visitIntrinsicInst(llvm::IntrinsicInst & II)
- protected void visitMemIntrinsic(llvm::MemIntrinsic & I)
- public llvm::detail::PtrUseVisitorBase::PtrInfo visitPtr(llvm::Instruction & I)
- protected void visitPtrToIntInst(llvm::PtrToIntInst & I)
- protected void visitStoreInst(llvm::StoreInst & SI)
Inherited from PtrUseVisitorBase:
Methods
¶PtrUseVisitor<DerivedT>(
const llvm::DataLayout& DL)
PtrUseVisitor<DerivedT>(
const llvm::DataLayout& DL)
Declared at: llvm/include/llvm/Analysis/PtrUseVisitor.h:213
Parameters
- const llvm::DataLayout& DL
¶void visitAddrSpaceCastInst(
llvm::AddrSpaceCastInst& ASC)
void visitAddrSpaceCastInst(
llvm::AddrSpaceCastInst& ASC)
Declared at: llvm/include/llvm/Analysis/PtrUseVisitor.h:259
Parameters
¶void visitBitCastInst(llvm::BitCastInst& BC)
void visitBitCastInst(llvm::BitCastInst& BC)
Declared at: llvm/include/llvm/Analysis/PtrUseVisitor.h:255
Parameters
¶void visitCallSite(llvm::CallSite CS)
void visitCallSite(llvm::CallSite CS)
Declared at: llvm/include/llvm/Analysis/PtrUseVisitor.h:298
Parameters
¶void visitDbgInfoIntrinsic(
llvm::DbgInfoIntrinsic& I)
void visitDbgInfoIntrinsic(
llvm::DbgInfoIntrinsic& I)
Declared at: llvm/include/llvm/Analysis/PtrUseVisitor.h:283
Parameters
¶void visitGetElementPtrInst(
llvm::GetElementPtrInst& GEPI)
void visitGetElementPtrInst(
llvm::GetElementPtrInst& GEPI)
Declared at: llvm/include/llvm/Analysis/PtrUseVisitor.h:267
Parameters
- llvm::GetElementPtrInst& GEPI
¶void visitIntrinsicInst(llvm::IntrinsicInst& II)
void visitIntrinsicInst(llvm::IntrinsicInst& II)
Declared at: llvm/include/llvm/Analysis/PtrUseVisitor.h:285
Parameters
¶void visitMemIntrinsic(llvm::MemIntrinsic& I)
void visitMemIntrinsic(llvm::MemIntrinsic& I)
Declared at: llvm/include/llvm/Analysis/PtrUseVisitor.h:284
Parameters
¶llvm::detail::PtrUseVisitorBase::PtrInfo visitPtr(
llvm::Instruction& I)
llvm::detail::PtrUseVisitorBase::PtrInfo visitPtr(
llvm::Instruction& I)
Description
Recursively visit the uses of the given pointer.
Declared at: llvm/include/llvm/Analysis/PtrUseVisitor.h:220
Parameters
Returns
An info struct about the pointer. See \c PtrInfo for details.
¶void visitPtrToIntInst(llvm::PtrToIntInst& I)
void visitPtrToIntInst(llvm::PtrToIntInst& I)
Declared at: llvm/include/llvm/Analysis/PtrUseVisitor.h:263
Parameters
¶void visitStoreInst(llvm::StoreInst& SI)
void visitStoreInst(llvm::StoreInst& SI)
Declared at: llvm/include/llvm/Analysis/PtrUseVisitor.h:250
Parameters
- llvm::StoreInst& SI