summaryrefslogtreecommitdiffstats
path: root/clang/lib/Frontend/PrintPreprocessedOutput.cpp
diff options
context:
space:
mode:
authorBenjamin Kramer <benny.kra@googlemail.com>2010-01-19 17:42:20 +0000
committerBenjamin Kramer <benny.kra@googlemail.com>2010-01-19 17:42:20 +0000
commitfb5f40f959d6f59ad6b039facefb26204b3f71c9 (patch)
treee62e1bbb9f998f327a1adf3b679b068f9deab9a8 /clang/lib/Frontend/PrintPreprocessedOutput.cpp
parent4f34432d09619741cc9c75ccff4935623f4f6fa6 (diff)
downloadbcm5719-llvm-fb5f40f959d6f59ad6b039facefb26204b3f71c9.tar.gz
bcm5719-llvm-fb5f40f959d6f59ad6b039facefb26204b3f71c9.zip
Avoid an instantiation of std::sort.
llvm-svn: 93882
Diffstat (limited to 'clang/lib/Frontend/PrintPreprocessedOutput.cpp')
-rw-r--r--clang/lib/Frontend/PrintPreprocessedOutput.cpp24
1 files changed, 10 insertions, 14 deletions
diff --git a/clang/lib/Frontend/PrintPreprocessedOutput.cpp b/clang/lib/Frontend/PrintPreprocessedOutput.cpp
index d9708d8bced..43deaee8c1d 100644
--- a/clang/lib/Frontend/PrintPreprocessedOutput.cpp
+++ b/clang/lib/Frontend/PrintPreprocessedOutput.cpp
@@ -22,7 +22,7 @@
#include "clang/Lex/Preprocessor.h"
#include "clang/Lex/TokenConcatenation.h"
#include "llvm/ADT/SmallString.h"
-#include "llvm/ADT/StringExtras.h"
+#include "llvm/ADT/STLExtras.h"
#include "llvm/Config/config.h"
#include "llvm/Support/raw_ostream.h"
#include <cstdio>
@@ -443,13 +443,11 @@ static void PrintPreprocessedTokens(Preprocessor &PP, Token &Tok,
}
}
-namespace {
- struct SortMacrosByID {
- typedef std::pair<IdentifierInfo*, MacroInfo*> id_macro_pair;
- bool operator()(const id_macro_pair &LHS, const id_macro_pair &RHS) const {
- return LHS.first->getName() < RHS.first->getName();
- }
- };
+typedef std::pair<IdentifierInfo*, MacroInfo*> id_macro_pair;
+static int MacroIDCompare(const void* a, const void* b) {
+ const id_macro_pair *LHS = static_cast<const id_macro_pair*>(a);
+ const id_macro_pair *RHS = static_cast<const id_macro_pair*>(b);
+ return LHS->first->getName().compare(RHS->first->getName());
}
static void DoPrintMacros(Preprocessor &PP, llvm::raw_ostream *OS) {
@@ -461,11 +459,9 @@ static void DoPrintMacros(Preprocessor &PP, llvm::raw_ostream *OS) {
do PP.Lex(Tok);
while (Tok.isNot(tok::eof));
- std::vector<std::pair<IdentifierInfo*, MacroInfo*> > MacrosByID;
- for (Preprocessor::macro_iterator I = PP.macro_begin(), E = PP.macro_end();
- I != E; ++I)
- MacrosByID.push_back(*I);
- std::sort(MacrosByID.begin(), MacrosByID.end(), SortMacrosByID());
+ llvm::SmallVector<id_macro_pair, 128>
+ MacrosByID(PP.macro_begin(), PP.macro_end());
+ llvm::array_pod_sort(MacrosByID.begin(), MacrosByID.end(), MacroIDCompare);
for (unsigned i = 0, e = MacrosByID.size(); i != e; ++i) {
MacroInfo &MI = *MacrosByID[i].second;
@@ -473,7 +469,7 @@ static void DoPrintMacros(Preprocessor &PP, llvm::raw_ostream *OS) {
if (MI.isBuiltinMacro()) continue;
PrintMacroDefinition(*MacrosByID[i].first, MI, PP, *OS);
- *OS << "\n";
+ *OS << '\n';
}
}
OpenPOWER on IntegriCloud