6 #ifndef JLM_LLVM_OPT_ALIAS_ANALYSES_ELIMINATEDMODREFSUMMARIZER_HPP
7 #define JLM_LLVM_OPT_ALIAS_ANALYSES_ELIMINATEDMODREFSUMMARIZER_HPP
25 template<
class TModRefSummarizer,
class TModRefEliminator>
29 std::is_base_of_v<ModRefSummarizer, TModRefSummarizer>,
30 "T is not derived from ModRefSummarizer.");
33 std::is_base_of_v<ModRefEliminator, TModRefEliminator>,
34 "T is not derived from ModRefEliminator.");
53 const rvsdg::RvsdgModule & rvsdgModule,
55 util::StatisticsCollector & statisticsCollector)
override
57 auto seedModRefSummary =
58 ModRefSummarizer_.SummarizeModRefs(rvsdgModule, pointsToGraph, statisticsCollector);
59 return ModRefEliminator_.EliminateModRefs(rvsdgModule, *seedModRefSummary, statisticsCollector);
62 static std::unique_ptr<ModRefSummary>
69 return summarizer.
SummarizeModRefs(rvsdgModule, pointsToGraph, statisticsCollector);
Combines a ModeRefSummarizer and a ModRefEliminator.
std::unique_ptr< ModRefSummary > SummarizeModRefs(const rvsdg::RvsdgModule &rvsdgModule, const PointsToGraph &pointsToGraph, util::StatisticsCollector &statisticsCollector) override
TModRefSummarizer ModRefSummarizer_
TModRefEliminator ModRefEliminator_
~EliminatedModRefSummarizer() noexcept override=default
static std::unique_ptr< ModRefSummary > Create(const rvsdg::RvsdgModule &rvsdgModule, const PointsToGraph &pointsToGraph, util::StatisticsCollector &statisticsCollector)