|
Jlm
|

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 |
Struct holding temporary data used during the creation of a single mod/ref summary
Definition at line 765 of file RegionAwareModRefSummarizer.cpp.
|
inlineexplicit |
Definition at line 767 of file RegionAwareModRefSummarizer.cpp.
| 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.
| 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.
| 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.
| 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.
| 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.
| 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.
| 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.
| 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.
| 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.
| 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.
| 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.
| 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.
| 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.