aboutsummaryrefslogtreecommitdiffstats
path: root/lib/Analysis/AliasAnalysisCounter.cpp
diff options
context:
space:
mode:
authorChris Lattner <sabre@nondot.org>2003-02-07 20:39:17 +0000
committerChris Lattner <sabre@nondot.org>2003-02-07 20:39:17 +0000
commita89feb55e04fd4f25d7c09fb0c119fc9250b5b5a (patch)
treede301601877c2134ef99d731c63f8d22dfe74784 /lib/Analysis/AliasAnalysisCounter.cpp
parent70e332d34b795f1645953c35747e345f88b8688b (diff)
downloadexternal_llvm-a89feb55e04fd4f25d7c09fb0c119fc9250b5b5a.zip
external_llvm-a89feb55e04fd4f25d7c09fb0c119fc9250b5b5a.tar.gz
external_llvm-a89feb55e04fd4f25d7c09fb0c119fc9250b5b5a.tar.bz2
Allow counting multiple passes, and print the pass name counted
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@5504 91177308-0d34-0410-b5e6-96231b3b80d8
Diffstat (limited to 'lib/Analysis/AliasAnalysisCounter.cpp')
-rw-r--r--lib/Analysis/AliasAnalysisCounter.cpp44
1 files changed, 24 insertions, 20 deletions
diff --git a/lib/Analysis/AliasAnalysisCounter.cpp b/lib/Analysis/AliasAnalysisCounter.cpp
index d80a3f8..ba41092 100644
--- a/lib/Analysis/AliasAnalysisCounter.cpp
+++ b/lib/Analysis/AliasAnalysisCounter.cpp
@@ -10,10 +10,31 @@
#include <iostream>
namespace {
- unsigned No = 0, May = 0, Must = 0;
+ class AliasAnalysisCounter : public Pass, public AliasAnalysis {
+ unsigned No, May, Must;
+ const char *Name;
+ public:
+ AliasAnalysisCounter() : No(0), May(0), Must(0) {}
+ ~AliasAnalysisCounter() {
+ unsigned Sum = No+May+Must;
+ if (Sum) { // Print a report if any counted queries occurred...
+ std::cerr
+ << "\n===== Alias Analysis Counter Report =====\n"
+ << " Analysis counted: " << Name << "\n"
+ << " " << Sum << " Total Alias Queries Performed\n"
+ << " " << No << " no alias responses (" << No*100/Sum << "%)\n"
+ << " " << May << " may alias responses (" << May*100/Sum << "%)\n"
+ << " " << Must << " must alias responses (" <<Must*100/Sum<<"%)\n"
+ << " Alias Analysis Counter Summary: " << No*100/Sum << "%/"
+ << May*100/Sum << "%/" << Must*100/Sum<<"%\n\n";
+ }
+ }
+
+ bool run(Module &M) {
+ Name = dynamic_cast<Pass*>(&getAnalysis<AliasAnalysis>())->getPassName();
+ return false;
+ }
- struct AliasAnalysisCounter : public Pass, public AliasAnalysis {
- bool run(Module &M) { return false; }
virtual void getAnalysisUsage(AnalysisUsage &AU) const {
AU.addRequired<AliasAnalysis>();
AU.setPreservesAll();
@@ -44,21 +65,4 @@ namespace {
RegisterOpt<AliasAnalysisCounter>
X("count-aa", "Count Alias Analysis Query Responses");
RegisterAnalysisGroup<AliasAnalysis, AliasAnalysisCounter> Y;
-
-
- struct ResultPrinter {
- ~ResultPrinter() {
- unsigned Sum = No+May+Must;
- if (Sum) { // Print a report if any counted queries occurred...
- std::cerr
- << "\n===== Alias Analysis Counter Report =====\n"
- << " " << Sum << " Total Alias Queries Performed\n"
- << " " << No << " no alias responses (" << No*100/Sum << "%)\n"
- << " " << May << " may alias responses (" << May*100/Sum << "%)\n"
- << " " << Must << " must alias responses (" <<Must*100/Sum<<"%)\n"
- << " Alias Analysis Counter Summary: " << No*100/Sum << "%/"
- << May*100/Sum << "%/" << Must*100/Sum<<"%\n\n";
- }
- }
- } RP;
}