|
Jlm
|


Public Member Functions | |
| RegionAwareModRefSet ()=default | |
| std::optional< size_t > | getRefExternalMinSize () const |
| std::optional< size_t > | getModExternalMinSize () const |
| bool | markAsReferencingExternal (size_t minSize) |
| bool | markAsModifyingExternal (size_t minSize) |
| ModRefEffect | getImplicitModRefEffectForExternal (std::optional< size_t > size) const noexcept |
| bool | mayCallExternalFunction () const |
| bool | markAsCallingExternalFunction () |
| bool | addExplicitMemoryNode (PointsToGraph::NodeIndex memoryNode, ModRefEffect modRefEffect) |
| bool | addMemoryNode (PointsToGraph::NodeIndex memoryNode, bool isExternallyAvailable, std::optional< size_t > memoryNodeSize, ModRefEffect modRefEffect) |
| void | keepSubsetOfExplicitMemoryNodes (const util::HashSet< PointsToGraph::NodeIndex > &filter) |
| bool | propagateFlags (const RegionAwareModRefSet &other) |
Public Member Functions inherited from jlm::llvm::aa::ModRefSet | |
| const std::unordered_map< PointsToGraph::NodeIndex, ModRefEffect > & | getModRefNodes () const |
Static Public Attributes | |
| static constexpr uint32_t | NoneSize = std::numeric_limits<uint32_t>::max() |
Private Attributes | |
| uint32_t | refExternalOfSize_ = NoneSize |
| uint32_t | modExternalOfSize_ = NoneSize |
| bool | callsExternalFunction_ = false |
Additional Inherited Members | |
Protected Member Functions inherited from jlm::llvm::aa::ModRefSet | |
| ModRefSet ()=default | |
| ModRefSet (const ModRefSet &other)=default | |
| ModRefSet (ModRefSet &&other)=default | |
| ModRefSet & | operator= (const ModRefSet &other)=default |
| ModRefSet & | operator= (ModRefSet &&other)=default |
Protected Attributes inherited from jlm::llvm::aa::ModRefSet | |
| std::unordered_map< PointsToGraph::NodeIndex, ModRefEffect > | modRefNodes_ |
ModRefSet subclass used by RegionAwareModRefSummarizer.
The class uses both implicit and explicit representations of memory nodes. The implicit representation is used for accesses to externally available memory, and calls (or structural nodes that contain calls) to functions in external modules. The explicit representation uses hash maps containing individual memory nodes.
After solving, implicit memory nodes are materialized into the explicit sets, with the exception of memory nodes that can be compressed into the external memory node. Constant memory is also left out of the final materialized sets.
Definition at line 234 of file RegionAwareModRefSummarizer.cpp.
|
default |
|
inline |
Adds the given memoryNode as an explicit member of the ModRefSet. This function does not attempt to skip memory nodes that are already implicitly referenced.
| memoryNode | the index of the memory node in the points-to graph. |
| modRefEffect | the effect(s) that may be performed on the memory node |
Definition at line 373 of file RegionAwareModRefSummarizer.cpp.
|
inline |
Adds the given memoryNode to the set, unless the memory node is already represented. Uses the external availability and byte size of the memory node to determine this.
| memoryNode | the index of the memory node in the points-to graph. |
| isExternallyAvailable | a boolean indicating if the memory node is externally available. |
| memoryNodeSize | the byte size of the memory node, if known. Otherwise nullopt. |
| modRefEffect | the effect that may be performed on the added memory node. |
Definition at line 398 of file RegionAwareModRefSummarizer.cpp.
|
inlinenoexcept |
Helper function for finding the implicitly flagged ModRefEffect on a hypothetical externally available memory node, optionally of a specific size.
| size | the size of the hypothetical memory node, or nullopt if unknown |
Definition at line 321 of file RegionAwareModRefSummarizer.cpp.
|
inline |
The set can be flagged as possibly modifying all externally available memory locations with a byte size >= some minimum. (Also includes all memory nodes of unknown size.) If the set is flagged as possibly calling external functions, the size will be 0, indicating that all externally available memory is possibly modified by this set.
Definition at line 269 of file RegionAwareModRefSummarizer.cpp.
|
inline |
The set can be flagged as possibly referencing all externally available memory locations with a byte size >= some minimum. (Also includes all memory nodes of unknown size.) If the set is flagged as possibly calling external functions, its size will always be 0, indicating that all externally available memory is possibly referenced by this set.
Definition at line 252 of file RegionAwareModRefSummarizer.cpp.
|
inline |
Removes all explicit memory nodes that are not included in the given filter.
Definition at line 421 of file RegionAwareModRefSummarizer.cpp.
|
inline |
Marks the ModRefSet as possibly containing calls to externally defined functions.
Definition at line 351 of file RegionAwareModRefSummarizer.cpp.
|
inline |
Marks the set as possibly modifying all externally available memory of size >= minSize.
| minSize | the minimum byte size of the memory locations. 0 means all sizes. |
Definition at line 301 of file RegionAwareModRefSummarizer.cpp.
|
inline |
Marks the ModRefSet as referencing all externally available memory of size >= minSize.
| minSize | the minimum byte size of the memory locations. 0 means all sizes. |
Definition at line 282 of file RegionAwareModRefSummarizer.cpp.
|
inline |
Definition at line 341 of file RegionAwareModRefSummarizer.cpp.
|
inline |
Propagates all flags from the given set other to this set.
Definition at line 438 of file RegionAwareModRefSummarizer.cpp.
|
private |
Definition at line 479 of file RegionAwareModRefSummarizer.cpp.
|
private |
Definition at line 476 of file RegionAwareModRefSummarizer.cpp.
|
staticconstexpr |
Definition at line 238 of file RegionAwareModRefSummarizer.cpp.
|
private |
Definition at line 473 of file RegionAwareModRefSummarizer.cpp.