Factor out percentage printing into its own function. Make two changes to
authorChris Lattner <sabre@nondot.org>
Sat, 26 Mar 2005 23:56:33 +0000 (23:56 +0000)
committerChris Lattner <sabre@nondot.org>
Sat, 26 Mar 2005 23:56:33 +0000 (23:56 +0000)
the function: print more precision XX.X% instead of XX%, and cast to ULL
before scaling by 100/1000 to avoid wrap around for large numbers of queries
(such as occur for 253.perlbmk and 176.gcc)

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@20872 91177308-0d34-0410-b5e6-96231b3b80d8

lib/Analysis/AliasAnalysisEvaluator.cpp

index da8e4e8e62799cae403b0ce6ec6e053ec1bb6cf2..593dbedea80091cd8cc2e8445f5519f1c5846076 100644 (file)
@@ -188,6 +188,11 @@ bool AAEval::runOnFunction(Function &F) {
   return false;
 }
 
+static void PrintPercent(unsigned Num, unsigned Sum) {
+  std::cerr << "(" << Num*100ULL/Sum << "."
+            << ((Num*1000ULL/Sum) % 10) << "%)\n";
+}
+
 bool AAEval::doFinalization(Module &M) {
   unsigned AliasSum = NoAlias + MayAlias + MustAlias;
   std::cerr << "===== Alias Analysis Evaluator Report =====\n";
@@ -195,12 +200,12 @@ bool AAEval::doFinalization(Module &M) {
     std::cerr << "  Alias Analysis Evaluator Summary: No pointers!\n";
   } else { 
     std::cerr << "  " << AliasSum << " Total Alias Queries Performed\n";
-    std::cerr << "  " << NoAlias << " no alias responses (" 
-              << NoAlias*100/AliasSum << "%)\n";
-    std::cerr << "  " << MayAlias << " may alias responses (" 
-              << MayAlias*100/AliasSum << "%)\n";
-    std::cerr << "  " << MustAlias << " must alias responses (" 
-              << MustAlias*100/AliasSum <<"%)\n";
+    std::cerr << "  " << NoAlias << " no alias responses ";
+    PrintPercent(NoAlias, AliasSum);
+    std::cerr << "  " << MayAlias << " may alias responses ";
+    PrintPercent(MayAlias, AliasSum);
+    std::cerr << "  " << MustAlias << " must alias responses ";
+    PrintPercent(MustAlias, AliasSum);
     std::cerr << "  Alias Analysis Evaluator Pointer Alias Summary: " 
               << NoAlias*100/AliasSum  << "%/" << MayAlias*100/AliasSum << "%/" 
               << MustAlias*100/AliasSum << "%\n";
@@ -212,14 +217,14 @@ bool AAEval::doFinalization(Module &M) {
     std::cerr << "  Alias Analysis Mod/Ref Evaluator Summary: no mod/ref!\n";
   } else {
     std::cerr << "  " << ModRefSum << " Total ModRef Queries Performed\n";
-    std::cerr << "  " << NoModRef << " no mod/ref responses (" 
-              << NoModRef*100/ModRefSum << "%)\n";
-    std::cerr << "  " << Mod << " mod responses (" 
-              << Mod*100/ModRefSum << "%)\n";
-    std::cerr << "  " << Ref << " ref responses (" 
-              << Ref*100/ModRefSum <<"%)\n";
-    std::cerr << "  " << ModRef << " mod & ref responses (" 
-              << ModRef*100/ModRefSum <<"%)\n";
+    std::cerr << "  " << NoModRef << " no mod/ref responses ";
+    PrintPercent(NoModRef, ModRefSum);
+    std::cerr << "  " << Mod << " mod responses ";
+    PrintPercent(Mod, ModRefSum);
+    std::cerr << "  " << Ref << " ref responses ";
+    PrintPercent(Ref, ModRefSum);
+    std::cerr << "  " << ModRef << " mod & ref responses ";
+    PrintPercent(ModRef, ModRefSum);
     std::cerr << "  Alias Analysis Evaluator Mod/Ref Summary: " 
               << NoModRef*100/ModRefSum  << "%/" << Mod*100/ModRefSum << "%/" 
               << Ref*100/ModRefSum << "%/" << ModRef*100/ModRefSum << "%\n";