Jlm
Public Member Functions | Private Member Functions | Private Attributes | List of all members
jlm::llvm::aa::RegionalizedStateMap Class Referencefinal

Hash map for mapping Rvsdg regions to StateMap class instances. More...

Collaboration diagram for jlm::llvm::aa::RegionalizedStateMap:
Collaboration graph
[legend]

Public Member Functions

 ~RegionalizedStateMap ()
 
 RegionalizedStateMap (const ModRefSummary &modRefSummary)
 
 RegionalizedStateMap (const RegionalizedStateMap &)=delete
 
 RegionalizedStateMap (RegionalizedStateMap &&)=delete
 
RegionalizedStateMapoperator= (const RegionalizedStateMap &)=delete
 
RegionalizedStateMapoperator= (RegionalizedStateMap &&)=delete
 
StateMap::MemoryNodeStatePairInsertState (PointsToGraph::NodeIndex memoryNode, rvsdg::Output &state)
 
StateMap::MemoryNodeStatePairTryGetState (const rvsdg::Region &region, PointsToGraph::NodeIndex memoryNode) const
 
bool HasState (const rvsdg::Region &region, PointsToGraph::NodeIndex memoryNode) const
 
StateMap::MemoryNodeStatePairGetState (const rvsdg::Region &region, PointsToGraph::NodeIndex memoryNode)
 
std::vector< StateMap::MemoryNodeStatePair * > GetStates (const rvsdg::Region &region, const util::HashSet< PointsToGraph::NodeIndex > &memoryNodes)
 
std::vector< StateMap::MemoryNodeStatePair * > GetExistingStates (const rvsdg::Region &region, const util::HashSet< PointsToGraph::NodeIndex > &memoryNodes) const
 
std::vector< StateMap::MemoryNodeStatePair * > GetExistingStates (const rvsdg::SimpleNode &node) const
 
const util::HashSet< PointsToGraph::NodeIndex > & GetSimpleNodeModRef (const rvsdg::SimpleNode &node) const
 
void PushRegion (const rvsdg::Region &region)
 
void PopRegion (const rvsdg::Region &region)
 

Private Member Functions

StateMapGetStateMap (const rvsdg::Region &region) const noexcept
 

Private Attributes

const ModRefSummaryModRefSummary_
 
std::unordered_map< const rvsdg::Region *, std::unique_ptr< StateMap > > StateMaps_
 

Detailed Description

Hash map for mapping Rvsdg regions to StateMap class instances.

Definition at line 422 of file MemoryStateEncoder.cpp.

Constructor & Destructor Documentation

◆ ~RegionalizedStateMap()

jlm::llvm::aa::RegionalizedStateMap::~RegionalizedStateMap ( )
inline

Definition at line 425 of file MemoryStateEncoder.cpp.

◆ RegionalizedStateMap() [1/3]

jlm::llvm::aa::RegionalizedStateMap::RegionalizedStateMap ( const ModRefSummary modRefSummary)
inlineexplicit

Definition at line 431 of file MemoryStateEncoder.cpp.

◆ RegionalizedStateMap() [2/3]

jlm::llvm::aa::RegionalizedStateMap::RegionalizedStateMap ( const RegionalizedStateMap )
delete

◆ RegionalizedStateMap() [3/3]

jlm::llvm::aa::RegionalizedStateMap::RegionalizedStateMap ( RegionalizedStateMap &&  )
delete

Member Function Documentation

◆ GetExistingStates() [1/2]

std::vector<StateMap::MemoryNodeStatePair *> jlm::llvm::aa::RegionalizedStateMap::GetExistingStates ( const rvsdg::Region region,
const util::HashSet< PointsToGraph::NodeIndex > &  memoryNodes 
) const
inline

Gets the MemoryNodeStatePair for each provided memory node, in the given region. If a memory node is not yet associated with a state, it is skipped. This is useful in situations where an alloca node is located lower than one of its "users". To avoid cycles in the graph, the alloca's state edge must be omitted. This is also safe to do, as there is no way the "user" is actually using the alloca.

Parameters
regionthe region in question.
memoryNodesthe set of memory nodes that is being looked up.
Returns
the MemoryNode/State pairs that exist in the region

Definition at line 488 of file MemoryStateEncoder.cpp.

◆ GetExistingStates() [2/2]

std::vector<StateMap::MemoryNodeStatePair *> jlm::llvm::aa::RegionalizedStateMap::GetExistingStates ( const rvsdg::SimpleNode node) const
inline

Definition at line 496 of file MemoryStateEncoder.cpp.

◆ GetSimpleNodeModRef()

const util::HashSet<PointsToGraph::NodeIndex>& jlm::llvm::aa::RegionalizedStateMap::GetSimpleNodeModRef ( const rvsdg::SimpleNode node) const
inline

Definition at line 502 of file MemoryStateEncoder.cpp.

◆ GetState()

StateMap::MemoryNodeStatePair* jlm::llvm::aa::RegionalizedStateMap::GetState ( const rvsdg::Region region,
PointsToGraph::NodeIndex  memoryNode 
)
inline

Definition at line 464 of file MemoryStateEncoder.cpp.

◆ GetStateMap()

StateMap& jlm::llvm::aa::RegionalizedStateMap::GetStateMap ( const rvsdg::Region region) const
inlineprivatenoexcept

Definition at line 523 of file MemoryStateEncoder.cpp.

◆ GetStates()

std::vector<StateMap::MemoryNodeStatePair *> jlm::llvm::aa::RegionalizedStateMap::GetStates ( const rvsdg::Region region,
const util::HashSet< PointsToGraph::NodeIndex > &  memoryNodes 
)
inline

Definition at line 470 of file MemoryStateEncoder.cpp.

◆ HasState()

bool jlm::llvm::aa::RegionalizedStateMap::HasState ( const rvsdg::Region region,
PointsToGraph::NodeIndex  memoryNode 
) const
inline

Definition at line 458 of file MemoryStateEncoder.cpp.

◆ InsertState()

StateMap::MemoryNodeStatePair* jlm::llvm::aa::RegionalizedStateMap::InsertState ( PointsToGraph::NodeIndex  memoryNode,
rvsdg::Output state 
)
inline

Definition at line 446 of file MemoryStateEncoder.cpp.

◆ operator=() [1/2]

RegionalizedStateMap& jlm::llvm::aa::RegionalizedStateMap::operator= ( const RegionalizedStateMap )
delete

◆ operator=() [2/2]

RegionalizedStateMap& jlm::llvm::aa::RegionalizedStateMap::operator= ( RegionalizedStateMap &&  )
delete

◆ PopRegion()

void jlm::llvm::aa::RegionalizedStateMap::PopRegion ( const rvsdg::Region region)
inline

Definition at line 515 of file MemoryStateEncoder.cpp.

◆ PushRegion()

void jlm::llvm::aa::RegionalizedStateMap::PushRegion ( const rvsdg::Region region)
inline

Definition at line 508 of file MemoryStateEncoder.cpp.

◆ TryGetState()

StateMap::MemoryNodeStatePair* jlm::llvm::aa::RegionalizedStateMap::TryGetState ( const rvsdg::Region region,
PointsToGraph::NodeIndex  memoryNode 
) const
inline

Definition at line 452 of file MemoryStateEncoder.cpp.

Member Data Documentation

◆ ModRefSummary_

const ModRefSummary& jlm::llvm::aa::RegionalizedStateMap::ModRefSummary_
private

Definition at line 529 of file MemoryStateEncoder.cpp.

◆ StateMaps_

std::unordered_map<const rvsdg::Region *, std::unique_ptr<StateMap> > jlm::llvm::aa::RegionalizedStateMap::StateMaps_
private

Definition at line 531 of file MemoryStateEncoder.cpp.


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