- unsigned Sum = No+May+Must;
- std::cerr << "===== Alias Analysis Evaluator Report =====\n";
- std::cerr << " " << Sum << " Total Alias Queries Performed\n";
- std::cerr << " " << No << " no alias responses (" << No*100/Sum << "%)\n";
- std::cerr << " " << May << " may alias responses (" << May*100/Sum << "%)\n";
- std::cerr << " " << Must << " must alias responses (" <<Must*100/Sum<<"%)\n";
- std::cerr << " Alias Analysis Evaluator Summary: " << No*100/Sum << "%/"
- << May*100/Sum << "%/" << Must*100/Sum<<"%\n";
+ unsigned AliasSum = NoAlias + MayAlias + MustAlias;
+ cerr << "===== Alias Analysis Evaluator Report =====\n";
+ if (AliasSum == 0) {
+ cerr << " Alias Analysis Evaluator Summary: No pointers!\n";
+ } else {
+ cerr << " " << AliasSum << " Total Alias Queries Performed\n";
+ cerr << " " << NoAlias << " no alias responses ";
+ PrintPercent(NoAlias, AliasSum);
+ cerr << " " << MayAlias << " may alias responses ";
+ PrintPercent(MayAlias, AliasSum);
+ cerr << " " << MustAlias << " must alias responses ";
+ PrintPercent(MustAlias, AliasSum);
+ cerr << " Alias Analysis Evaluator Pointer Alias Summary: "
+ << NoAlias*100/AliasSum << "%/" << MayAlias*100/AliasSum << "%/"
+ << MustAlias*100/AliasSum << "%\n";
+ }
+
+ // Display the summary for mod/ref analysis
+ unsigned ModRefSum = NoModRef + Mod + Ref + ModRef;
+ if (ModRefSum == 0) {
+ cerr << " Alias Analysis Mod/Ref Evaluator Summary: no mod/ref!\n";
+ } else {
+ cerr << " " << ModRefSum << " Total ModRef Queries Performed\n";
+ cerr << " " << NoModRef << " no mod/ref responses ";
+ PrintPercent(NoModRef, ModRefSum);
+ cerr << " " << Mod << " mod responses ";
+ PrintPercent(Mod, ModRefSum);
+ cerr << " " << Ref << " ref responses ";
+ PrintPercent(Ref, ModRefSum);
+ cerr << " " << ModRef << " mod & ref responses ";
+ PrintPercent(ModRef, ModRefSum);
+ cerr << " Alias Analysis Evaluator Mod/Ref Summary: "
+ << NoModRef*100/ModRefSum << "%/" << Mod*100/ModRefSum << "%/"
+ << Ref*100/ModRefSum << "%/" << ModRef*100/ModRefSum << "%\n";
+ }
+