diff options
author | Chris Lattner <sabre@nondot.org> | 2003-02-07 20:39:17 +0000 |
---|---|---|
committer | Chris Lattner <sabre@nondot.org> | 2003-02-07 20:39:17 +0000 |
commit | 9a734b6c2416c0e5f6a68f19e3daa71802d5d218 (patch) | |
tree | 6c25cadcb75edd612470218b449b6106adc7264b /llvm/lib | |
parent | e996681c1c213a5b12a0ff99b39d72e32ffe1fbc (diff) | |
download | bcm5719-llvm-9a734b6c2416c0e5f6a68f19e3daa71802d5d218.tar.gz bcm5719-llvm-9a734b6c2416c0e5f6a68f19e3daa71802d5d218.zip |
Allow counting multiple passes, and print the pass name counted
llvm-svn: 5504
Diffstat (limited to 'llvm/lib')
-rw-r--r-- | llvm/lib/Analysis/AliasAnalysisCounter.cpp | 44 |
1 files changed, 24 insertions, 20 deletions
diff --git a/llvm/lib/Analysis/AliasAnalysisCounter.cpp b/llvm/lib/Analysis/AliasAnalysisCounter.cpp index d80a3f8bf94..ba41092128b 100644 --- a/llvm/lib/Analysis/AliasAnalysisCounter.cpp +++ b/llvm/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; } |