LLVM 19.0.0git
Classes | Protected Member Functions | Protected Attributes | List of all members
llvm::detail::PtrUseVisitorBase Class Reference

Implementation of non-dependent functionality for PtrUseVisitor. More...

#include "llvm/Analysis/PtrUseVisitor.h"

Inheritance diagram for llvm::detail::PtrUseVisitorBase:
Inheritance graph
[legend]

Classes

class  PtrInfo
 This class provides information about the result of a visit. More...
 
struct  UseToVisit
 A struct of the data needed to visit a particular use. More...
 

Protected Member Functions

 PtrUseVisitorBase (const DataLayout &DL)
 Note that the constructor is protected because this class must be a base class, we can't create instances directly of this class.
 
void enqueueUsers (Instruction &I)
 Enqueue the users of this instruction in the visit worklist.
 
bool adjustOffsetForGEP (GetElementPtrInst &GEPI)
 Walk the operands of a GEP and adjust the offset as appropriate.
 

Protected Attributes

const DataLayoutDL
 
Visitation infrastructure
PtrInfo PI
 The info collected about the pointer being visited thus far.
 
SmallVector< UseToVisit, 8 > Worklist
 The worklist of to-visit uses.
 
SmallPtrSet< Use *, 8 > VisitedUses
 A set of visited uses to break cycles in unreachable code.
 
Per-visit state

This state is reset for each instruction visited.

UseU
 The use currently being visited.
 
bool IsOffsetKnown
 True if we have a known constant offset for the use currently being visited.
 
APInt Offset
 The constant offset of the use if that is known.
 

Detailed Description

Implementation of non-dependent functionality for PtrUseVisitor.

See PtrUseVisitor for the public interface and detailed comments about usage. This class is just a helper base class which is not templated and contains all common code to be shared between different instantiations of PtrUseVisitor.

Definition at line 47 of file PtrUseVisitor.h.

Constructor & Destructor Documentation

◆ PtrUseVisitorBase()

llvm::detail::PtrUseVisitorBase::PtrUseVisitorBase ( const DataLayout DL)
inlineprotected

Note that the constructor is protected because this class must be a base class, we can't create instances directly of this class.

Definition at line 155 of file PtrUseVisitor.h.

Member Function Documentation

◆ adjustOffsetForGEP()

bool detail::PtrUseVisitorBase::adjustOffsetForGEP ( GetElementPtrInst GEPI)
protected

Walk the operands of a GEP and adjust the offset as appropriate.

This routine does the heavy lifting of the pointer walk by computing offsets and looking through GEPs.

Definition at line 32 of file PtrUseVisitor.cpp.

References llvm::GetElementPtrInst::accumulateConstantOffset(), DL, llvm::Value::getType(), llvm::Offset, and llvm::APInt::sextOrTrunc().

Referenced by llvm::PtrUseVisitor< DerivedT >::visitGetElementPtrInst().

◆ enqueueUsers()

void detail::PtrUseVisitorBase::enqueueUsers ( Instruction I)
protected

Enqueue the users of this instruction in the visit worklist.

This will visit the users with the same offset of the current visit (including an unknown offset if that is the current state).

Definition at line 20 of file PtrUseVisitor.cpp.

References I, IsOffsetKnown, Offset, U, VisitedUses, and Worklist.

Referenced by llvm::PtrUseVisitor< DerivedT >::visitAddrSpaceCastInst(), llvm::PtrUseVisitor< DerivedT >::visitBitCastInst(), llvm::PtrUseVisitor< DerivedT >::visitGetElementPtrInst(), and llvm::PtrUseVisitor< DerivedT >::visitPtr().

Member Data Documentation

◆ DL

const DataLayout& llvm::detail::PtrUseVisitorBase::DL
protected

Definition at line 110 of file PtrUseVisitor.h.

Referenced by llvm::PtrUseVisitor< DerivedT >::visitPtr().

◆ IsOffsetKnown

bool llvm::detail::PtrUseVisitorBase::IsOffsetKnown
protected

True if we have a known constant offset for the use currently being visited.

Definition at line 146 of file PtrUseVisitor.h.

Referenced by enqueueUsers(), llvm::PtrUseVisitor< DerivedT >::visitGetElementPtrInst(), and llvm::PtrUseVisitor< DerivedT >::visitPtr().

◆ Offset

APInt llvm::detail::PtrUseVisitorBase::Offset
protected

The constant offset of the use if that is known.

Definition at line 149 of file PtrUseVisitor.h.

Referenced by enqueueUsers(), llvm::PtrUseVisitor< DerivedT >::visitGetElementPtrInst(), and llvm::PtrUseVisitor< DerivedT >::visitPtr().

◆ PI

PtrInfo llvm::detail::PtrUseVisitorBase::PI
protected

◆ U

Use* llvm::detail::PtrUseVisitorBase::U
protected

The use currently being visited.

Definition at line 142 of file PtrUseVisitor.h.

Referenced by enqueueUsers(), llvm::PtrUseVisitor< DerivedT >::visitPtr(), and llvm::PtrUseVisitor< DerivedT >::visitStoreInst().

◆ VisitedUses

SmallPtrSet<Use *, 8> llvm::detail::PtrUseVisitorBase::VisitedUses
protected

A set of visited uses to break cycles in unreachable code.

Definition at line 133 of file PtrUseVisitor.h.

Referenced by enqueueUsers().

◆ Worklist

SmallVector<UseToVisit, 8> llvm::detail::PtrUseVisitorBase::Worklist
protected

The worklist of to-visit uses.

Definition at line 130 of file PtrUseVisitor.h.

Referenced by enqueueUsers(), and llvm::PtrUseVisitor< DerivedT >::visitPtr().


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