- if (--NumStats == 0 && AccumStats) {
- std::ostream *OutStream = GetLibSupportInfoOutputFile();
-
- // Figure out how long the biggest Value and Name fields are...
- unsigned MaxNameLen = 0, MaxValLen = 0;
- for (unsigned i = 0, e = AccumStats->size(); i != e; ++i) {
- MaxValLen = std::max(MaxValLen,
- (unsigned)(*AccumStats)[i].Value.length());
- MaxNameLen = std::max(MaxNameLen,
- (unsigned)std::strlen((*AccumStats)[i].Name));
- }
-
- // Sort the fields...
- std::stable_sort(AccumStats->begin(), AccumStats->end());
-
- // Print out the statistics header...
- *OutStream << "===" << std::string(73, '-') << "===\n"
- << " ... Statistics Collected ...\n"
- << "===" << std::string(73, '-') << "===\n\n";
-
- // Print all of the statistics accumulated...
- for (unsigned i = 0, e = AccumStats->size(); i != e; ++i)
- (*AccumStats)[i].print(MaxValLen, MaxNameLen, *OutStream);
-
- *OutStream << std::endl; // Flush the output stream...
-
- // Free all accumulated statistics...
- delete AccumStats;
- AccumStats = 0;
- if (OutStream != &std::cerr && OutStream != &std::cout)
- delete OutStream; // Close the file...
+void llvm::EnableStatistics() {
+ Enabled.setValue(true);
+}
+
+bool llvm::AreStatisticsEnabled() {
+ return Enabled;
+}
+
+void llvm::PrintStatistics(raw_ostream &OS) {
+ StatisticInfo &Stats = *StatInfo;
+
+ // Figure out how long the biggest Value and Name fields are.
+ unsigned MaxNameLen = 0, MaxValLen = 0;
+ for (size_t i = 0, e = Stats.Stats.size(); i != e; ++i) {
+ MaxValLen = std::max(MaxValLen,
+ (unsigned)utostr(Stats.Stats[i]->getValue()).size());
+ MaxNameLen = std::max(MaxNameLen,
+ (unsigned)std::strlen(Stats.Stats[i]->getName()));