Jlm
Public Member Functions | Public Attributes | List of all members
jlm::llvm::aa::RegionAwareModRefSummarizer::Context Struct Reference
Collaboration diagram for jlm::llvm::aa::RegionAwareModRefSummarizer::Context:
Collaboration graph
[legend]

Public Member Functions

 Context (const PointsToGraph &ptg)
 

Public Attributes

const PointsToGraphpointsToGraph
 
std::vector< util::HashSet< const rvsdg::LambdaNode * > > SccFunctions
 
size_t ExternalNodeSccIndex = 0
 
std::vector< util::HashSet< size_t > > SccCallTargets
 
std::unordered_map< const rvsdg::LambdaNode *, size_t > FunctionToSccIndex
 
util::HashSet< const rvsdg::LambdaNode * > FunctionsCallingSetjmp
 
std::vector< util::HashSet< PointsToGraph::NodeIndex > > AllocasDeadInScc
 
util::HashSet< PointsToGraph::NodeIndexSimpleAllocas
 
std::unordered_map< const rvsdg::Region *, util::HashSet< PointsToGraph::NodeIndex > > NonReentrantAllocas
 
ModRefSetIndex ExternalModRefIndex = 0
 
std::vector< util::HashSet< ModRefSetIndex > > ModRefSetSimpleConstraints
 
std::unordered_map< ModRefSetIndex, const util::HashSet< PointsToGraph::NodeIndex > * > ModRefSetBlocklists
 

Detailed Description

Struct holding temporary data used during the creation of a single mod/ref summary

Definition at line 362 of file RegionAwareModRefSummarizer.cpp.

Constructor & Destructor Documentation

◆ Context()

jlm::llvm::aa::RegionAwareModRefSummarizer::Context::Context ( const PointsToGraph ptg)
inlineexplicit

Definition at line 364 of file RegionAwareModRefSummarizer.cpp.

Member Data Documentation

◆ AllocasDeadInScc

std::vector<util::HashSet<PointsToGraph::NodeIndex> > jlm::llvm::aa::RegionAwareModRefSummarizer::Context::AllocasDeadInScc

For each SCC, only allocas defined within the SCC, or within a predecessor of the SCC, can possibly be live. All other allocas are considered dead in the SCC.

Assigned in FindAllocasDeadInSccs(). Remains constant after.

Definition at line 420 of file RegionAwareModRefSummarizer.cpp.

◆ ExternalModRefIndex

ModRefSetIndex jlm::llvm::aa::RegionAwareModRefSummarizer::Context::ExternalModRefIndex = 0

A ModRefSet containing all MemoryNodes that can be read or written to from external functions.

Assigned in CreateExternalModRefSet(). Remains constant after.

Definition at line 443 of file RegionAwareModRefSummarizer.cpp.

◆ ExternalNodeSccIndex

size_t jlm::llvm::aa::RegionAwareModRefSummarizer::Context::ExternalNodeSccIndex = 0

The index of the SCC in the call graph that represent containing all external functions

Assigned in createCallGraph(). Remains constant after.

Definition at line 390 of file RegionAwareModRefSummarizer.cpp.

◆ FunctionsCallingSetjmp

util::HashSet<const rvsdg::LambdaNode *> jlm::llvm::aa::RegionAwareModRefSummarizer::Context::FunctionsCallingSetjmp

The set of functions that call setjmp directly. Assigned in createCallGraph(). Remains constant after.

Definition at line 412 of file RegionAwareModRefSummarizer.cpp.

◆ FunctionToSccIndex

std::unordered_map<const rvsdg::LambdaNode *, size_t> jlm::llvm::aa::RegionAwareModRefSummarizer::Context::FunctionToSccIndex

A mapping from functions to the index of the SCC they belong to in the call graph

Assigned in createCallGraph(). Remains constant after.

Definition at line 406 of file RegionAwareModRefSummarizer.cpp.

◆ ModRefSetBlocklists

std::unordered_map<ModRefSetIndex, const util::HashSet<PointsToGraph::NodeIndex> *> jlm::llvm::aa::RegionAwareModRefSummarizer::Context::ModRefSetBlocklists

Blocklists in the ModRefSet constraint graphs. During solving, a MemoryNode x that is about to be propagated to a ModRefSet a will be skipped if x is in the Blocklist associated with a. The pointer to the blocklist must remain valid until solving is finished.

Definition at line 459 of file RegionAwareModRefSummarizer.cpp.

◆ ModRefSetSimpleConstraints

std::vector<util::HashSet<ModRefSetIndex> > jlm::llvm::aa::RegionAwareModRefSummarizer::Context::ModRefSetSimpleConstraints

Simple edges in the ModRefSet constraint graph. A simple edge a -> b indicates that the ModRefSet b should contain everything in a. ModRefSetSimpleEdges[a] contains b, as well as any other simple edge successors.

Definition at line 450 of file RegionAwareModRefSummarizer.cpp.

◆ NonReentrantAllocas

std::unordered_map<const rvsdg::Region *, util::HashSet<PointsToGraph::NodeIndex> > jlm::llvm::aa::RegionAwareModRefSummarizer::Context::NonReentrantAllocas

For each region, this field contains the set of allocas defined in the region, that have been shown to be non-reentrant.

Assigned in CreateNonReentrantAllocaSets(). Remains constant after.

Definition at line 436 of file RegionAwareModRefSummarizer.cpp.

◆ pointsToGraph

const PointsToGraph& jlm::llvm::aa::RegionAwareModRefSummarizer::Context::pointsToGraph

The points to graph used to create the Mod/Ref summary.

Definition at line 371 of file RegionAwareModRefSummarizer.cpp.

◆ SccCallTargets

std::vector<util::HashSet<size_t> > jlm::llvm::aa::RegionAwareModRefSummarizer::Context::SccCallTargets

For each SCC in the call graph, the set of SCCs it targets using calls. Since SCCs are ordered in reverse topological order, an SCC never targets higher indices. If there is any possibility of recursion within an SCC, it also targets itself.

Assigned in createCallGraph(). Remains constant after.

Definition at line 399 of file RegionAwareModRefSummarizer.cpp.

◆ SccFunctions

std::vector<util::HashSet<const rvsdg::LambdaNode *> > jlm::llvm::aa::RegionAwareModRefSummarizer::Context::SccFunctions

The set of functions belonging to each SCC in the call graph. The SCCs are ordered in reverse topological order, so if function a() calls b(), and they are not in the same SCC, the SCC containing a() comes after the SCC containing b().

External functions are not included in these sets, see ExternalNodeSccIndex.

Assigned in createCallGraph(). Remains constant after.

Definition at line 383 of file RegionAwareModRefSummarizer.cpp.

◆ SimpleAllocas

util::HashSet<PointsToGraph::NodeIndex> jlm::llvm::aa::RegionAwareModRefSummarizer::Context::SimpleAllocas

The set of all Simple Allocas in the module.

Assigned in CreateSimpleAllocaSet(). Remains constant after.

Definition at line 427 of file RegionAwareModRefSummarizer.cpp.


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