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 PointsToGraph & pointsToGraph
 
util::HashSet< PointsToGraph::NodeIndex > SimpleAllocas
 
std::vector< const rvsdg::LambdaNode * > Functions
 
util::HashSet< const rvsdg::LambdaNode * > FunctionsCallingSetjmp
 
std::vector< std::vector< ModRefSetIndex > > ModRefSetSimpleConstraints
 
std::unordered_map< ModRefSetIndex, util::HashSet< PointsToGraph::NodeIndex > > ModRefSetSimpleAllocaAllowlist
 
util::HashSet< PointsToGraph::NodeIndex > ReadOnlyMemoryNodes
 
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 765 of file RegionAwareModRefSummarizer.cpp.

Constructor & Destructor Documentation

◆ Context()

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

Definition at line 767 of file RegionAwareModRefSummarizer.cpp.

Member Data Documentation

◆ Functions

std::vector<const rvsdg::LambdaNode *> jlm::llvm::aa::RegionAwareModRefSummarizer::Context::Functions

A list containing all functions in the module. Assigned during annotateInterproceduralRegion().

Definition at line 790 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 during the annotation phase. Remains constant after. Used by removeSimpleAllocasAroundSetjmp().

Definition at line 797 of file RegionAwareModRefSummarizer.cpp.

◆ ModRefSetSimpleAllocaAllowlist

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

Allowlist for simple allocas 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 a simple alloca that is not presesent in the allowlist for A. If A has no allowlist, nothing is blocked.

Definition at line 813 of file RegionAwareModRefSummarizer.cpp.

◆ ModRefSetSimpleConstraints

std::vector<std::vector<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 804 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 836 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 851 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 831 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 845 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 827 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 841 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 774 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 821 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().

Some simple allocas may later be removed in removeSimpleAllocasAroundSetjmp(), if the module contains any calls to setjmp.

Definition at line 784 of file RegionAwareModRefSummarizer.cpp.


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