Jlm
Loading...
Searching...
No Matches
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
 
util::HashSet< PointsToGraph::NodeIndexSimpleAllocas
 
std::unordered_map< const rvsdg::Node *, util::HashSet< PointsToGraph::NodeIndex > > NonReentrantAllocas
 
std::deque< util::HashSet< PointsToGraph::NodeIndex > > CallBlocklists
 
std::vector< util::HashSet< ModRefSetIndex > > ModRefSetSimpleConstraints
 
std::unordered_map< ModRefSetIndex, const util::HashSet< PointsToGraph::NodeIndex > * > ModRefSetBlocklists
 
util::HashSet< PointsToGraph::NodeIndexReadOnlyMemoryNodes
 
size_t numModRefSetsMaterialized = 0
 
size_t modRefSetSizeBeforeMaterialization = 0
 
size_t modRefSetSizeAfterFiltering = 0
 
size_t numModRefSetsWithEffectOnExternal = 0
 
size_t numModRefSetsCallingExternalFunction = 0
 
size_t modRefSetSizeAfterMaterialization = 0
 

Detailed Description

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

Definition at line 779 of file RegionAwareModRefSummarizer.cpp.

Constructor & Destructor Documentation

◆ Context()

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

Definition at line 781 of file RegionAwareModRefSummarizer.cpp.

Member Data Documentation

◆ CallBlocklists

std::deque<util::HashSet<PointsToGraph::NodeIndex> > jlm::llvm::aa::RegionAwareModRefSummarizer::Context::CallBlocklists

Used for blocking simple allocas from being propagated to the ModRefSet of calls where none of the call's arguments can reach the simple alloca. The sets are placed in a deque, since references to elements stay valid.

Definition at line 852 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 807 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 829 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 823 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 graph. During solving, a memory node 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 868 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 859 of file RegionAwareModRefSummarizer.cpp.

◆ modRefSetSizeAfterFiltering

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

The total number of explicit memory nodes in all ModRefSets after filtering away memory nodes that can be compressed away.

Definition at line 891 of file RegionAwareModRefSummarizer.cpp.

◆ modRefSetSizeAfterMaterialization

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

The total number of explicit memory nodes in all ModRefSets after materialization. For sets that are not flagged as effecting externally available memory, their size after materialization will be equal to their size after filtering.

Definition at line 906 of file RegionAwareModRefSummarizer.cpp.

◆ modRefSetSizeBeforeMaterialization

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

The total number of explicit memory nodes in all ModRefSets before materialization.

Definition at line 886 of file RegionAwareModRefSummarizer.cpp.

◆ NonReentrantAllocas

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

For structural nodes whose subregion(s) contain alloca nodes that are non-reentrant, the memory nodes respresenting those alloca nodes are added to this map.

Assigned in CreateNonReentrantAllocaSets(). Remains constant after.

Definition at line 845 of file RegionAwareModRefSummarizer.cpp.

◆ numModRefSetsCallingExternalFunction

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

The number of ModRefSets that are flagged as possibly calling an external function.

Definition at line 900 of file RegionAwareModRefSummarizer.cpp.

◆ numModRefSetsMaterialized

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

The number of ModRefSets that go through materialization. Should be all sets except for the one representing external function calls.

Definition at line 882 of file RegionAwareModRefSummarizer.cpp.

◆ numModRefSetsWithEffectOnExternal

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

The number of ModRefSets that are flagged as having an effect on externally available memory.

Definition at line 896 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 788 of file RegionAwareModRefSummarizer.cpp.

◆ ReadOnlyMemoryNodes

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

After solving, some memory nodes may end up being read-only. Just like memory marked constant, we can omit these memory nodes from all ModRefSets.

Assigned in determineReadOnlyMemory(), remains constant after.

Definition at line 876 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 816 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 800 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 836 of file RegionAwareModRefSummarizer.cpp.


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