Rewrite a cold use of std::sort to array_pod_sort.

No functionality change.

llvm-svn: 191173
This commit is contained in:
Benjamin Kramer 2013-09-22 12:41:24 +00:00
parent 5626259506
commit a92b80f8a0
1 changed files with 16 additions and 12 deletions

View File

@ -154,25 +154,29 @@ void ento::registerCallGraphDumper(CheckerManager &mgr) {
namespace {
class ConfigDumper : public Checker< check::EndOfTranslationUnit > {
typedef AnalyzerOptions::ConfigTable Table;
static int compareEntry(const void *LHS, const void *RHS) {
return ((const Table::MapEntryTy *)LHS)->getKey().compare(
((const Table::MapEntryTy *)RHS)->getKey());
}
public:
void checkEndOfTranslationUnit(const TranslationUnitDecl *TU,
AnalysisManager& mgr,
BugReporter &BR) const {
const Table &Config = mgr.options.Config;
const AnalyzerOptions::ConfigTable &Config = mgr.options.Config;
AnalyzerOptions::ConfigTable::const_iterator I =
Config.begin(), E = Config.end();
SmallVector<const Table::MapEntryTy *, 32> Keys;
for (Table::const_iterator I = Config.begin(), E = Config.end(); I != E;
++I)
Keys.push_back(&*I);
llvm::array_pod_sort(Keys.begin(), Keys.end(), compareEntry);
std::vector<StringRef> Keys;
for (; I != E ; ++I) { Keys.push_back(I->getKey()); }
sort(Keys.begin(), Keys.end());
llvm::errs() << "[config]\n";
for (unsigned i = 0, n = Keys.size(); i < n ; ++i) {
StringRef Key = Keys[i];
I = Config.find(Key);
llvm::errs() << Key << " = " << I->second << '\n';
}
for (unsigned I = 0, E = Keys.size(); I != E; ++I)
llvm::errs() << Keys[I]->getKey() << " = " << Keys[I]->second << '\n';
llvm::errs() << "[stats]\n" << "num-entries = " << Keys.size() << '\n';
}
};