Jlm
ModRefSummary.hpp
Go to the documentation of this file.
1 /*
2  * Copyright 2022 Nico Reißmann <nico.reissmann@gmail.com>
3  * Copyright 2025 Håvard Krogstie <krogstie.havard@gmail.com>
4  * See COPYING for terms of redistribution.
5  */
6 
7 #ifndef JLM_LLVM_OPT_ALIAS_ANALYSES_MODREFSUMMARY_HPP
8 #define JLM_LLVM_OPT_ALIAS_ANALYSES_MODREFSUMMARY_HPP
9 
11 #include <jlm/rvsdg/gamma.hpp>
12 #include <jlm/rvsdg/theta.hpp>
13 #include <jlm/util/HashSet.hpp>
14 
15 namespace jlm::llvm::aa
16 {
17 
23 {
24 public:
25  virtual ~ModRefSummary() noexcept = default;
26 
27  [[nodiscard]] virtual const PointsToGraph &
28  GetPointsToGraph() const noexcept = 0;
29 
44  [[nodiscard]] virtual const util::HashSet<PointsToGraph::NodeIndex> &
45  GetSimpleNodeModRef(const rvsdg::SimpleNode & node) const = 0;
46 
52  [[nodiscard]] virtual const util::HashSet<PointsToGraph::NodeIndex> &
53  GetGammaEntryModRef(const rvsdg::GammaNode & gamma) const = 0;
54 
60  [[nodiscard]] virtual const util::HashSet<PointsToGraph::NodeIndex> &
61  GetGammaExitModRef(const rvsdg::GammaNode & gamma) const = 0;
62 
68  [[nodiscard]] virtual const util::HashSet<PointsToGraph::NodeIndex> &
69  GetThetaModRef(const rvsdg::ThetaNode & theta) const = 0;
70 
76  [[nodiscard]] virtual const util::HashSet<PointsToGraph::NodeIndex> &
77  GetLambdaEntryModRef(const rvsdg::LambdaNode & lambda) const = 0;
78 
84  [[nodiscard]] virtual const util::HashSet<PointsToGraph::NodeIndex> &
85  GetLambdaExitModRef(const rvsdg::LambdaNode & lambda) const = 0;
86 };
87 
88 }
89 
90 #endif // JLM_LLVM_OPT_ALIAS_ANALYSES_MODREFSUMMARY_HPP
virtual const util::HashSet< PointsToGraph::NodeIndex > & GetGammaExitModRef(const rvsdg::GammaNode &gamma) const =0
virtual const util::HashSet< PointsToGraph::NodeIndex > & GetLambdaEntryModRef(const rvsdg::LambdaNode &lambda) const =0
virtual const util::HashSet< PointsToGraph::NodeIndex > & GetGammaEntryModRef(const rvsdg::GammaNode &gamma) const =0
virtual const util::HashSet< PointsToGraph::NodeIndex > & GetLambdaExitModRef(const rvsdg::LambdaNode &lambda) const =0
virtual const util::HashSet< PointsToGraph::NodeIndex > & GetThetaModRef(const rvsdg::ThetaNode &theta) const =0
virtual const PointsToGraph & GetPointsToGraph() const noexcept=0
virtual ~ModRefSummary() noexcept=default
virtual const util::HashSet< PointsToGraph::NodeIndex > & GetSimpleNodeModRef(const rvsdg::SimpleNode &node) const =0