Jlm
Loading...
Searching...
No Matches
PointsToAnalysisStateEncoder.cpp
Go to the documentation of this file.
1/*
2 * Copyright 2021 Nico Reißmann <nico.reissmann@gmail.com>
3 * Copyright 2023 Håvard Krogstie <krogstie.havard@gmail.com>
4 * See COPYING for terms of redistribution.
5 */
6
15
16namespace jlm::llvm::aa
17{
18
19template<typename TPointsToAnalysis, typename TModRefSummarizer>
21 ~PointsToAnalysisStateEncoder() noexcept = default;
22
23template<typename TPointsToAnalysis, typename TModRefSummarizer>
24void
25PointsToAnalysisStateEncoder<TPointsToAnalysis, TModRefSummarizer>::Run(
26 rvsdg::RvsdgModule & rvsdgModule,
27 util::StatisticsCollector & statisticsCollector)
28{
29 TPointsToAnalysis ptaPass;
30 std::shared_ptr<PointsToGraph> pointsToGraph = ptaPass.Analyze(rvsdgModule, statisticsCollector);
31
33 {
34 AliasAnalysisPrecisionEvaluator precisionEvaluator;
35
36 // Use different alias analyses, and their combination
37 auto localAA = std::make_shared<LocalAliasAnalysis>();
38 auto ptgAA = std::make_shared<PointsToGraphAliasAnalysis>(pointsToGraph);
39 ChainedAliasAnalysis ptgPlusLocalAA(ptgAA, localAA);
40
41 precisionEvaluator.EvaluateAliasAnalysisClient(rvsdgModule, *localAA, statisticsCollector);
42 precisionEvaluator.EvaluateAliasAnalysisClient(rvsdgModule, *ptgAA, statisticsCollector);
43 precisionEvaluator.EvaluateAliasAnalysisClient(
44 rvsdgModule,
45 ptgPlusLocalAA,
47 }
48
49 auto modRefSummary = TModRefSummarizer::Create(rvsdgModule, *pointsToGraph, statisticsCollector);
50
51 MemoryStateEncoder encoder;
52 encoder.Encode(rvsdgModule, *modRefSummary, statisticsCollector);
53}
54
55// Explicitly instantiate combinations
58
59}
static jlm::util::StatisticsCollector statisticsCollector
void EvaluateAliasAnalysisClient(const rvsdg::RvsdgModule &rvsdgModule, AliasAnalysis &aliasAnalysis, util::StatisticsCollector &statisticsCollector)
void Encode(rvsdg::RvsdgModule &rvsdgModule, const ModRefSummary &modRefSummary, util::StatisticsCollector &statisticsCollector)
bool IsDemanded(Statistics::Id id) const noexcept