LLVM 22.0.0git
AliasAnalysisEvaluator.h
Go to the documentation of this file.
1//===- AliasAnalysisEvaluator.h - Alias Analysis Accuracy Evaluator -------===//
2//
3// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
4// See https://llvm.org/LICENSE.txt for license information.
5// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
6//
7//===----------------------------------------------------------------------===//
8/// \file
9///
10/// This file implements a simple N^2 alias analysis accuracy evaluator. The
11/// analysis result is a set of statistics of how many times the AA
12/// infrastructure provides each kind of alias result and mod/ref result when
13/// queried with all pairs of pointers in the function.
14///
15/// It can be used to evaluate a change in an alias analysis implementation,
16/// algorithm, or the AA pipeline infrastructure itself. It acts like a stable
17/// and easily tested consumer of all AA information exposed.
18///
19/// This is inspired and adapted from code by: Naveen Neelakantam, Francesco
20/// Spadini, and Wojciech Stryjewski.
21///
22//===----------------------------------------------------------------------===//
23
24#ifndef LLVM_ANALYSIS_ALIASANALYSISEVALUATOR_H
25#define LLVM_ANALYSIS_ALIASANALYSISEVALUATOR_H
26
27#include "llvm/IR/PassManager.h"
29
30namespace llvm {
31class AAResults;
32class Function;
33
34class AAEvaluator : public PassInfoMixin<AAEvaluator> {
35 int64_t FunctionCount = 0;
36 int64_t NoAliasCount = 0, MayAliasCount = 0, PartialAliasCount = 0;
37 int64_t MustAliasCount = 0;
38 int64_t NoModRefCount = 0, ModCount = 0, RefCount = 0, ModRefCount = 0;
39
40public:
41 AAEvaluator() = default;
43 : FunctionCount(Arg.FunctionCount), NoAliasCount(Arg.NoAliasCount),
44 MayAliasCount(Arg.MayAliasCount),
45 PartialAliasCount(Arg.PartialAliasCount),
46 MustAliasCount(Arg.MustAliasCount), NoModRefCount(Arg.NoModRefCount),
47 ModCount(Arg.ModCount), RefCount(Arg.RefCount),
48 ModRefCount(Arg.ModRefCount) {
49 Arg.FunctionCount = 0;
50 }
52
53 /// Run the pass over the function.
55
56private:
57 void runInternal(Function &F, AAResults &AA);
58};
59}
60
61#endif
#define LLVM_ABI
Definition Compiler.h:213
This header defines various interfaces for pass management in LLVM.
#define F(x, y, z)
Definition MD5.cpp:55
AAEvaluator()=default
AAEvaluator(AAEvaluator &&Arg)
LLVM_ABI PreservedAnalyses run(Function &F, FunctionAnalysisManager &AM)
Run the pass over the function.
A set of analyses that are preserved following a run of a transformation pass.
Definition Analysis.h:112
Abstract Attribute helper functions.
Definition Attributor.h:165
This is an optimization pass for GlobalISel generic memory operations.
AnalysisManager< Function > FunctionAnalysisManager
Convenience typedef for the Function analysis manager.
A CRTP mix-in to automatically provide informational APIs needed for passes.
Definition PassManager.h:70