Jlm
ModRefEliminator.hpp
Go to the documentation of this file.
1 /*
2  * Copyright 2023 Nico Reißmann <nico.reissmann@gmail.com>
3  * See COPYING for terms of redistribution.
4  */
5 
6 #ifndef JLM_LLVM_OPT_ALIAS_ANALYSES_MODREFELIMINATOR_HPP
7 #define JLM_LLVM_OPT_ALIAS_ANALYSES_MODREFELIMINATOR_HPP
8 
9 #include <memory>
10 
11 namespace jlm::rvsdg
12 {
13 class RvsdgModule;
14 }
15 
16 namespace jlm::util
17 {
18 class StatisticsCollector;
19 }
20 
21 namespace jlm::llvm::aa
22 {
23 
24 class ModRefSummary;
25 
27 {
28 public:
29  virtual ~ModRefEliminator() noexcept = default;
30 
40  virtual std::unique_ptr<ModRefSummary>
42  const rvsdg::RvsdgModule & rvsdgModule,
43  const ModRefSummary & seedModRefSummary,
44  util::StatisticsCollector & statisticsCollector) = 0;
45 };
46 
47 }
48 
49 #endif // JLM_LLVM_OPT_ALIAS_ANALYSES_MODREFELIMINATOR_HPP
virtual std::unique_ptr< ModRefSummary > EliminateModRefs(const rvsdg::RvsdgModule &rvsdgModule, const ModRefSummary &seedModRefSummary, util::StatisticsCollector &statisticsCollector)=0
virtual ~ModRefEliminator() noexcept=default