aboutsummaryrefslogtreecommitdiff
path: root/llvm/lib/Analysis/AliasAnalysis.cpp
diff options
context:
space:
mode:
authorNikita Popov <nikita.ppv@gmail.com>2020-12-05 10:39:31 +0100
committerNikita Popov <nikita.ppv@gmail.com>2020-12-05 11:09:15 +0100
commitf8afba5f7a25a69c12191d979d78d40fa6e5b684 (patch)
tree6ec17f90861986fe380aa147a998af26c9ee867b /llvm/lib/Analysis/AliasAnalysis.cpp
parent8925d2347432b69d7e4b721a4ced85df0ad782b1 (diff)
downloadllvm-f8afba5f7a25a69c12191d979d78d40fa6e5b684.zip
llvm-f8afba5f7a25a69c12191d979d78d40fa6e5b684.tar.gz
llvm-f8afba5f7a25a69c12191d979d78d40fa6e5b684.tar.bz2
[AA] Add statistics for alias results (NFC)
Count how many NoAlias/MustAlias/MayAlias we get from top-level queries.
Diffstat (limited to 'llvm/lib/Analysis/AliasAnalysis.cpp')
-rw-r--r--llvm/lib/Analysis/AliasAnalysis.cpp26
1 files changed, 23 insertions, 3 deletions
diff --git a/llvm/lib/Analysis/AliasAnalysis.cpp b/llvm/lib/Analysis/AliasAnalysis.cpp
index 3d094a6..6635e53 100644
--- a/llvm/lib/Analysis/AliasAnalysis.cpp
+++ b/llvm/lib/Analysis/AliasAnalysis.cpp
@@ -24,6 +24,7 @@
//===----------------------------------------------------------------------===//
#include "llvm/Analysis/AliasAnalysis.h"
+#include "llvm/ADT/Statistic.h"
#include "llvm/Analysis/BasicAliasAnalysis.h"
#include "llvm/Analysis/CFLAndersAliasAnalysis.h"
#include "llvm/Analysis/CFLSteensAliasAnalysis.h"
@@ -54,8 +55,14 @@
#include <functional>
#include <iterator>
+#define DEBUG_TYPE "aa"
+
using namespace llvm;
+STATISTIC(NumNoAlias, "Number of NoAlias results");
+STATISTIC(NumMayAlias, "Number of MayAlias results");
+STATISTIC(NumMustAlias, "Number of MustAlias results");
+
/// Allow disabling BasicAA from the AA results. This is particularly useful
/// when testing to isolate a single AA implementation.
cl::opt<bool> DisableBasicAA("disable-basic-aa", cl::Hidden, cl::init(false));
@@ -109,12 +116,25 @@ AliasResult AAResults::alias(const MemoryLocation &LocA,
AliasResult AAResults::alias(const MemoryLocation &LocA,
const MemoryLocation &LocB, AAQueryInfo &AAQI) {
+ AliasResult Result = MayAlias;
+
+ Depth++;
for (const auto &AA : AAs) {
- auto Result = AA->alias(LocA, LocB, AAQI);
+ Result = AA->alias(LocA, LocB, AAQI);
if (Result != MayAlias)
- return Result;
+ break;
+ }
+ Depth--;
+
+ if (Depth == 0) {
+ if (Result == NoAlias)
+ ++NumNoAlias;
+ else if (Result == MustAlias)
+ ++NumMustAlias;
+ else
+ ++NumMayAlias;
}
- return MayAlias;
+ return Result;
}
bool AAResults::pointsToConstantMemory(const MemoryLocation &Loc,