6 #ifndef JLM_LLVM_OPT_ALIAS_ANALYSES_ALIASANALYSISPRECISIONEVALUATOR_HPP
7 #define JLM_LLVM_OPT_ALIAS_ANALYSES_ALIASANALYSISPRECISIONEVALUATOR_HPP
15 #include <unordered_map>
176 std::optional<util::FilePath> perFunctionOutput,
177 PrecisionStatistics & statistics)
const;
bool AliasingGraphEnabled_
void EvaluateAliasAnalysisClient(const rvsdg::RvsdgModule &rvsdgModule, AliasAnalysis &aliasAnalysis, util::StatisticsCollector &statisticsCollector)
void SetDeduplicatePointers(bool deduplicatePointers) noexcept
static void PrintAggregatedClobberInfos(const AggregatedClobberInfos &clobberInfos, std::ostream &out)
void SetAliasingGraphEnabled(bool aliasingGraphEnabled) noexcept
static AggregatedClobberInfos AggregateClobberInfos(const std::vector< PrecisionInfo::ClobberInfo > &clobberInfos)
void SetLoadsConsideredClobbers(bool loadsConsideredClobbers) noexcept
void AggregateDuplicates()
bool DeduplicatePointers_
~AliasAnalysisPrecisionEvaluator() noexcept
void CollectPointersFromRegion(const rvsdg::Region ®ion)
bool IsDeduplicatingPointers() const noexcept
void EvaluateFunction(const rvsdg::LambdaNode &function, AliasAnalysis &aliasAnalysis)
void CalculateResults(std::optional< util::FilePath > perFunctionOutput, PrecisionStatistics &statistics) const
void CollectPointersFromStructuralNode(const rvsdg::StructuralNode &node)
void AddToAliasingGraph(const rvsdg::Output &p1, size_t s1, const rvsdg::Output &p2, size_t s2, AliasAnalysis::AliasQueryResponse response)
bool PerFunctionOutputEnabled_
bool AreLoadsConsideredClobbers() const noexcept
bool IsAliasingGraphEnabled() const noexcept
void NormalizePointerValues()
bool IsPerFunctionOutputEnabled() const noexcept
void CollectPointer(const rvsdg::Output *value, size_t size, bool isClobber)
void SetPerFunctionOutputEnabled(bool perFunctionOutputEnabled) noexcept
void CollectPointersFromSimpleNode(const rvsdg::SimpleNode &node)
void EvaluateAllFunctions(const rvsdg::Region ®ion, AliasAnalysis &aliasAnalysis)
bool LoadsConsideredClobbers_
AliasAnalysisPrecisionEvaluator()
Represent acyclic RVSDG subgraphs.
double ClobberAverageNoAlias
double ClobberAverageMayAlias
uint64_t NumClobberOperations
double ClobberAverageMustAlias
util::graph::Graph * AliasingGraph_
std::unordered_map< const rvsdg::LambdaNode *, PrecisionInfo > PerFunctionPrecision
std::vector< std::tuple< const rvsdg::Output *, size_t, bool, size_t > > PointerOperations
std::vector< ClobberInfo > ClobberOperations
uint64_t NumClobberOperations