7#ifndef JLM_LLVM_OPT_ALIAS_ANALYSES_MODREFSUMMARY_HPP
8#define JLM_LLVM_OPT_ALIAS_ANALYSES_MODREFSUMMARY_HPP
16#include <unordered_map>
44[[nodiscard]]
inline bool
54[[nodiscard]]
inline bool
71 static_cast<std::underlying_type_t<ModRefEffect>
>(a)
72 |
static_cast<std::underlying_type_t<ModRefEffect>
>(b));
91[[nodiscard]]
inline bool
94 return (subset | superset) == superset;
116 [[nodiscard]]
const std::unordered_map<PointsToGraph::NodeIndex, ModRefEffect> &
136 std::unordered_map<PointsToGraph::NodeIndex, ModRefEffect>
modRefNodes_;
ModRefSet & operator=(const ModRefSet &other)=default
ModRefSet(ModRefSet &&other)=default
std::unordered_map< PointsToGraph::NodeIndex, ModRefEffect > modRefNodes_
ModRefSet & operator=(ModRefSet &&other)=default
const std::unordered_map< PointsToGraph::NodeIndex, ModRefEffect > & getModRefNodes() const
ModRefSet(const ModRefSet &other)=default
virtual const ModRefSet & GetGammaEntryModRef(const rvsdg::GammaNode &gamma) const =0
virtual const ModRefSet & GetThetaModRef(const rvsdg::ThetaNode &theta) const =0
virtual const ModRefSet & GetLambdaExitModRef(const rvsdg::LambdaNode &lambda) const =0
virtual const ModRefSet & GetLambdaEntryModRef(const rvsdg::LambdaNode &lambda) const =0
virtual const PointsToGraph & GetPointsToGraph() const noexcept=0
virtual const ModRefSet & GetGammaExitModRef(const rvsdg::GammaNode &gamma) const =0
virtual ~ModRefSummary() noexcept=default
virtual const ModRefSet & GetSimpleNodeModRef(const rvsdg::SimpleNode &node) const =0
bool isEffectSubset(ModRefEffect subset, ModRefEffect superset)
bool mayEffectModify(ModRefEffect effect)
ModRefEffect operator|(ModRefEffect a, ModRefEffect b)
bool mayEffectReference(ModRefEffect effect)
ModRefEffect & operator|=(ModRefEffect &a, ModRefEffect b)