Jlm
Public Member Functions | Public Attributes | List of all members
jlm::llvm::aa::PointerObjectSet::PointerObject Struct Referencefinal

Public Member Functions

 PointerObject (PointerObjectKind kind, bool canPoint)
 
bool CanTrackPointeesImplicitly () const noexcept
 
bool CanPoint () const noexcept
 
bool IsRegister () const noexcept
 

Public Attributes

PointerObjectKind Kind: util::BitWidthOfEnum(PointerObjectKind::COUNT)
 
const uint8_t CanPointFlag: 1
 
uint8_t HasEscaped: 1
 
uint8_t PointeesEscaping: 1
 
uint8_t PointsToExternal: 1
 
uint8_t StoredAsScalar: 1
 
uint8_t LoadedAsScalar: 1
 

Detailed Description

Struct used internally to store information about each PointerObject. When PointerObjects are unified, some flags are shared. This is handled by the accessor methods defined on PointerObjectSet

Definition at line 58 of file PointerObjectSet.hpp.

Constructor & Destructor Documentation

◆ PointerObject()

jlm::llvm::aa::PointerObjectSet::PointerObject::PointerObject ( PointerObjectKind  kind,
bool  canPoint 
)
inlineexplicit

Definition at line 90 of file PointerObjectSet.hpp.

Member Function Documentation

◆ CanPoint()

bool jlm::llvm::aa::PointerObjectSet::PointerObject::CanPoint ( ) const
inlinenoexcept

Some memory objects can only be pointed to, but never themselves contain pointers. When converting the analysis result to a PointsToGraph, these PointerObjects get no pointees.

Returns
true if the analysis tracks the points-to set of this PointerObject.

Definition at line 134 of file PointerObjectSet.hpp.

◆ CanTrackPointeesImplicitly()

bool jlm::llvm::aa::PointerObjectSet::PointerObject::CanTrackPointeesImplicitly ( ) const
inlinenoexcept

If a PointerObject is marked with both PointsToExternal and PointeesEscaping, its final points-to set will be identical to the set of escaped memory objects. There is no need to track its pointees, since all pointees can be marked as HasEscaped, and instead be an implicit pointee.

Returns
true if this PointerObject's points-to set can be tracked fully implicitly.

Definition at line 123 of file PointerObjectSet.hpp.

◆ IsRegister()

bool jlm::llvm::aa::PointerObjectSet::PointerObject::IsRegister ( ) const
inlinenoexcept

Registers are the only PointerObjects that may not be pointed to, only point.

Returns
true if the kind of this PointerObject is Register, false otherwise

Definition at line 144 of file PointerObjectSet.hpp.

Member Data Documentation

◆ CanPointFlag

const uint8_t jlm::llvm::aa::PointerObjectSet::PointerObject::CanPointFlag

Definition at line 66 of file PointerObjectSet.hpp.

◆ HasEscaped

uint8_t jlm::llvm::aa::PointerObjectSet::PointerObject::HasEscaped

Definition at line 70 of file PointerObjectSet.hpp.

◆ Kind

PointerObjectKind jlm::llvm::aa::PointerObjectSet::PointerObject::Kind

Definition at line 61 of file PointerObjectSet.hpp.

◆ LoadedAsScalar

uint8_t jlm::llvm::aa::PointerObjectSet::PointerObject::LoadedAsScalar

Definition at line 88 of file PointerObjectSet.hpp.

◆ PointeesEscaping

uint8_t jlm::llvm::aa::PointerObjectSet::PointerObject::PointeesEscaping

Definition at line 75 of file PointerObjectSet.hpp.

◆ PointsToExternal

uint8_t jlm::llvm::aa::PointerObjectSet::PointerObject::PointsToExternal

Definition at line 80 of file PointerObjectSet.hpp.

◆ StoredAsScalar

uint8_t jlm::llvm::aa::PointerObjectSet::PointerObject::StoredAsScalar

Definition at line 84 of file PointerObjectSet.hpp.


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