Jlm
Loading...
Searching...
No Matches
jlm
llvm
opt
alias-analyses
EliminatedModRefSummarizer.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_ELIMINATEDMODREFSUMMARIZER_HPP
7
#define JLM_LLVM_OPT_ALIAS_ANALYSES_ELIMINATEDMODREFSUMMARIZER_HPP
8
9
#include <
jlm/llvm/opt/alias-analyses/ModRefEliminator.hpp
>
10
#include <
jlm/llvm/opt/alias-analyses/ModRefSummarizer.hpp
>
11
12
namespace
jlm::llvm::aa
13
{
14
25
template
<
class
TModRefSummarizer,
class
TModRefEliminator>
26
class
EliminatedModRefSummarizer
final :
public
ModRefSummarizer
27
{
28
static_assert
(
29
std::is_base_of_v<ModRefSummarizer, TModRefSummarizer>,
30
"T is not derived from ModRefSummarizer."
);
31
32
static_assert
(
33
std::is_base_of_v<ModRefEliminator, TModRefEliminator>,
34
"T is not derived from ModRefEliminator."
);
35
36
public
:
37
~EliminatedModRefSummarizer
() noexcept override = default;
38
39
EliminatedModRefSummarizer
() = default;
40
41
EliminatedModRefSummarizer
(const
EliminatedModRefSummarizer
&) = delete;
42
43
EliminatedModRefSummarizer
(
EliminatedModRefSummarizer
&&) = delete;
44
45
EliminatedModRefSummarizer
&
46
operator=(const
EliminatedModRefSummarizer
&) = delete;
47
48
EliminatedModRefSummarizer
&
49
operator=(
EliminatedModRefSummarizer
&&) = delete;
50
51
std::unique_ptr<
ModRefSummary
>
52
SummarizeModRefs
(
53
const rvsdg::RvsdgModule & rvsdgModule,
54
const
PointsToGraph
& pointsToGraph,
55
util::StatisticsCollector &
statisticsCollector
)
override
56
{
57
auto
seedModRefSummary =
58
ModRefSummarizer_
.SummarizeModRefs(rvsdgModule, pointsToGraph,
statisticsCollector
);
59
return
ModRefEliminator_
.EliminateModRefs(rvsdgModule, *seedModRefSummary,
statisticsCollector
);
60
}
61
62
static
std::unique_ptr<ModRefSummary>
63
Create
(
64
const
rvsdg::RvsdgModule
& rvsdgModule,
65
const
PointsToGraph
& pointsToGraph,
66
util::StatisticsCollector
&
statisticsCollector
)
67
{
68
EliminatedModRefSummarizer
summarizer{};
69
return
summarizer.
SummarizeModRefs
(rvsdgModule, pointsToGraph,
statisticsCollector
);
70
}
71
72
private
:
73
TModRefSummarizer
ModRefSummarizer_
;
74
TModRefEliminator
ModRefEliminator_
;
75
};
76
77
}
78
79
#endif
// JLM_LLVM_OPT_ALIAS_ANALYSES_ELIMINATEDMODREFSUMMARIZER_HPP
statisticsCollector
static jlm::util::StatisticsCollector statisticsCollector
Definition
CommonNodeEliminationTests.cpp:24
ModRefEliminator.hpp
ModRefSummarizer.hpp
jlm::llvm::aa::EliminatedModRefSummarizer
Combines a ModeRefSummarizer and a ModRefEliminator.
Definition
EliminatedModRefSummarizer.hpp:27
jlm::llvm::aa::EliminatedModRefSummarizer::ModRefSummarizer_
TModRefSummarizer ModRefSummarizer_
Definition
EliminatedModRefSummarizer.hpp:73
jlm::llvm::aa::EliminatedModRefSummarizer::ModRefEliminator_
TModRefEliminator ModRefEliminator_
Definition
EliminatedModRefSummarizer.hpp:74
jlm::llvm::aa::EliminatedModRefSummarizer::~EliminatedModRefSummarizer
~EliminatedModRefSummarizer() noexcept override=default
jlm::llvm::aa::EliminatedModRefSummarizer::SummarizeModRefs
std::unique_ptr< ModRefSummary > SummarizeModRefs(const rvsdg::RvsdgModule &rvsdgModule, const PointsToGraph &pointsToGraph, util::StatisticsCollector &statisticsCollector) override
Definition
EliminatedModRefSummarizer.hpp:52
jlm::llvm::aa::EliminatedModRefSummarizer::Create
static std::unique_ptr< ModRefSummary > Create(const rvsdg::RvsdgModule &rvsdgModule, const PointsToGraph &pointsToGraph, util::StatisticsCollector &statisticsCollector)
Definition
EliminatedModRefSummarizer.hpp:63
jlm::llvm::aa::ModRefSummarizer
Definition
ModRefSummarizer.hpp:21
jlm::llvm::aa::ModRefSummary
Mod/Ref Summary.
Definition
ModRefSummary.hpp:144
jlm::llvm::aa::PointsToGraph
Definition
PointsToGraph.hpp:47
jlm::rvsdg::RvsdgModule
Definition
RvsdgModule.hpp:20
jlm::util::StatisticsCollector
Definition
Statistics.hpp:444
jlm::llvm::aa
Definition
AgnosticModRefSummarizer.cpp:23
Generated by
1.9.8