|
Jlm
|
Agnostic mod/ref summarizer. More...
#include <AgnosticModRefSummarizer.hpp>


Classes | |
| class | Statistics |
| Agnostic mod/ref summarizer statistics. More... | |
Public Member Functions | |
| ~AgnosticModRefSummarizer () override | |
| AgnosticModRefSummarizer () | |
| AgnosticModRefSummarizer (const AgnosticModRefSummarizer &)=delete | |
| AgnosticModRefSummarizer & | operator= (const AgnosticModRefSummarizer &)=delete |
| std::unique_ptr< ModRefSummary > | SummarizeModRefs (const rvsdg::RvsdgModule &rvsdgModule, const PointsToGraph &pointsToGraph, util::StatisticsCollector &statisticsCollector) override |
Public Member Functions inherited from jlm::llvm::aa::ModRefSummarizer | |
| virtual | ~ModRefSummarizer () noexcept=default |
Static Public Member Functions | |
| static std::unique_ptr< ModRefSummary > | Create (const rvsdg::RvsdgModule &rvsdgModule, const PointsToGraph &pointsToGraph, util::StatisticsCollector &statisticsCollector) |
| static std::unique_ptr< ModRefSummary > | Create (const rvsdg::RvsdgModule &rvsdgModule, const PointsToGraph &pointsToGraph) |
Private Member Functions | |
| void | AddPointerTargetsToModRefSet (const rvsdg::Output &output, util::HashSet< PointsToGraph::NodeIndex > &modRefSet) const |
| void | AnnotateRegion (const rvsdg::Region ®ion) |
| void | AnnotateSimpleNode (const rvsdg::SimpleNode &node) |
Static Private Member Functions | |
| static util::HashSet< PointsToGraph::NodeIndex > | GetAllMemoryNodes (const PointsToGraph &pointsToGraph) |
Private Attributes | |
| std::unique_ptr< AgnosticModRefSummary > | ModRefSummary_ |
Agnostic mod/ref summarizer.
The key idea of the agnostic mod/ref summarizer is that all memory states are routed through all structural nodes regardless of whether these states are required by any simple nodes within the structural nodes. This strategy ensures that the state of a memory location is always present for encoding while avoiding the complexity of an additional analysis for determining the required routing path of the states. The drawback is that a lot of states are routed through structural nodes where they are not needed, potentially leading to a significant runtime of the encoder for bigger RVSDGs.
Definition at line 31 of file AgnosticModRefSummarizer.hpp.
|
overridedefault |
|
default |
|
delete |
|
private |
Helper for adding all memory nodes the given output may target to a Mod/Ref set
| output | the pointer typed output |
| modRefSet | the set of memory nodes that should be expanded with output's targets |
Definition at line 191 of file AgnosticModRefSummarizer.cpp.
|
private |
Recursively traverses the given region, creating Mod/Ref sets for simple nodes.
| region | the region to traverse |
Definition at line 170 of file AgnosticModRefSummarizer.cpp.
|
private |
Creates a Mod/Ref set for the given simple node if it belongs in the Mod/Ref set map. Only nodes that affect memory are given Mod/Ref sets. llvm::CallOperation nodes are not included, as calls are assumed to touch everything.
| node | the simple node |
Definition at line 212 of file AgnosticModRefSummarizer.cpp.
|
static |
Creates a AgnosticModRefSummarizer and calls the SummarizeModRefs() method.
| rvsdgModule | The RVSDG module for which the ModRefSummary should be computed. |
| pointsToGraph | The PointsToGraph corresponding to the RVSDG module. |
Definition at line 283 of file AgnosticModRefSummarizer.cpp.
|
static |
Creates a AgnosticModRefSummarizer and calls the SummarizeModeRefs() method.
| rvsdgModule | The RVSDG module for which a ModRefSummary should be computed. |
| pointsToGraph | The PointsToGraph corresponding to the RVSDG module. |
| statisticsCollector | The statistics collector for collecting pass statistics. |
Definition at line 273 of file AgnosticModRefSummarizer.cpp.
|
staticprivate |
Creates a set containing all memory nodes in the given pointsToGraph
Definition at line 144 of file AgnosticModRefSummarizer.cpp.
|
delete |
|
overridevirtual |
Computes the memory nodes that are required at the entry and exit of a region, or at the entry/exit of a call node.
| rvsdgModule | The RVSDG module for which a ModRefSummary should be computed. |
| pointsToGraph | The points-to graph corresponding to rvsdgModule. |
| statisticsCollector | The statistics collector for collecting pass statistics. |
Implements jlm::llvm::aa::ModRefSummarizer.
Definition at line 121 of file AgnosticModRefSummarizer.cpp.
|
private |
Definition at line 111 of file AgnosticModRefSummarizer.hpp.