r203289 - [C++11] Convert sort predicates into lambdas.
Benjamin Kramer
benny.kra at googlemail.com
Fri Mar 7 13:35:40 PST 2014
Author: d0k
Date: Fri Mar 7 15:35:40 2014
New Revision: 203289
URL: http://llvm.org/viewvc/llvm-project?rev=203289&view=rev
Log:
[C++11] Convert sort predicates into lambdas.
No functionality change.
Modified:
cfe/trunk/lib/AST/VTableBuilder.cpp
cfe/trunk/lib/Analysis/LiveVariables.cpp
cfe/trunk/lib/Analysis/ReachableCode.cpp
cfe/trunk/lib/Frontend/PrintPreprocessedOutput.cpp
cfe/trunk/lib/StaticAnalyzer/Checkers/DebugCheckers.cpp
cfe/trunk/tools/libclang/CIndex.cpp
Modified: cfe/trunk/lib/AST/VTableBuilder.cpp
URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/AST/VTableBuilder.cpp?rev=203289&r1=203288&r2=203289&view=diff
==============================================================================
--- cfe/trunk/lib/AST/VTableBuilder.cpp (original)
+++ cfe/trunk/lib/AST/VTableBuilder.cpp Fri Mar 7 15:35:40 2014
@@ -3244,10 +3244,6 @@ void MicrosoftVTableContext::computeVTab
Changed = rebucketPaths(Paths);
}
-static bool pathCompare(const VPtrInfo *LHS, const VPtrInfo *RHS) {
- return LHS->MangledPath < RHS->MangledPath;
-}
-
static bool extendPath(VPtrInfo *P) {
if (P->NextBaseToMangle) {
P->MangledPath.push_back(P->NextBaseToMangle);
@@ -3265,7 +3261,10 @@ static bool rebucketPaths(VPtrInfoVector
// ordering is based on pointers, but it doesn't change our output order. The
// current algorithm is designed to match MSVC 2012's names.
VPtrInfoVector PathsSorted(Paths);
- std::sort(PathsSorted.begin(), PathsSorted.end(), pathCompare);
+ std::sort(PathsSorted.begin(), PathsSorted.end(),
+ [](const VPtrInfo *LHS, const VPtrInfo *RHS) {
+ return LHS->MangledPath < RHS->MangledPath;
+ });
bool Changed = false;
for (size_t I = 0, E = PathsSorted.size(); I != E;) {
// Scan forward to find the end of the bucket.
Modified: cfe/trunk/lib/Analysis/LiveVariables.cpp
URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/Analysis/LiveVariables.cpp?rev=203289&r1=203288&r2=203289&view=diff
==============================================================================
--- cfe/trunk/lib/Analysis/LiveVariables.cpp (original)
+++ cfe/trunk/lib/Analysis/LiveVariables.cpp Fri Mar 7 15:35:40 2014
@@ -581,16 +581,6 @@ LiveVariables::computeLiveness(AnalysisD
return new LiveVariables(LV);
}
-static bool compare_entries(const CFGBlock *A, const CFGBlock *B) {
- return A->getBlockID() < B->getBlockID();
-}
-
-static bool compare_vd_entries(const Decl *A, const Decl *B) {
- SourceLocation ALoc = A->getLocStart();
- SourceLocation BLoc = B->getLocStart();
- return ALoc.getRawEncoding() < BLoc.getRawEncoding();
-}
-
void LiveVariables::dumpBlockLiveness(const SourceManager &M) {
getImpl(impl).dumpBlockLiveness(M);
}
@@ -602,7 +592,9 @@ void LiveVariablesImpl::dumpBlockLivenes
it != ei; ++it) {
vec.push_back(it->first);
}
- std::sort(vec.begin(), vec.end(), compare_entries);
+ std::sort(vec.begin(), vec.end(), [](const CFGBlock *A, const CFGBlock *B) {
+ return A->getBlockID() < B->getBlockID();
+ });
std::vector<const VarDecl*> declVec;
@@ -619,9 +611,11 @@ void LiveVariablesImpl::dumpBlockLivenes
se = vals.liveDecls.end(); si != se; ++si) {
declVec.push_back(*si);
}
-
- std::sort(declVec.begin(), declVec.end(), compare_vd_entries);
-
+
+ std::sort(declVec.begin(), declVec.end(), [](const Decl *A, const Decl *B) {
+ return A->getLocStart() < B->getLocStart();
+ });
+
for (std::vector<const VarDecl*>::iterator di = declVec.begin(),
de = declVec.end(); di != de; ++di) {
llvm::errs() << " " << (*di)->getDeclName().getAsString()
Modified: cfe/trunk/lib/Analysis/ReachableCode.cpp
URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/Analysis/ReachableCode.cpp?rev=203289&r1=203288&r2=203289&view=diff
==============================================================================
--- cfe/trunk/lib/Analysis/ReachableCode.cpp (original)
+++ cfe/trunk/lib/Analysis/ReachableCode.cpp Fri Mar 7 15:35:40 2014
@@ -400,15 +400,6 @@ const Stmt *DeadCodeScan::findDeadCode(c
return 0;
}
-static int SrcCmp(const std::pair<const CFGBlock *, const Stmt *> *p1,
- const std::pair<const CFGBlock *, const Stmt *> *p2) {
- if (p1->second->getLocStart() < p2->second->getLocStart())
- return -1;
- if (p2->second->getLocStart() < p1->second->getLocStart())
- return 1;
- return 0;
-}
-
unsigned DeadCodeScan::scanBackwards(const clang::CFGBlock *Start,
clang::reachable_code::Callback &CB) {
@@ -457,7 +448,13 @@ unsigned DeadCodeScan::scanBackwards(con
// If we didn't find a dead root, then report the dead code with the
// earliest location.
if (!DeferredLocs.empty()) {
- llvm::array_pod_sort(DeferredLocs.begin(), DeferredLocs.end(), SrcCmp);
+ llvm::array_pod_sort(DeferredLocs.begin(), DeferredLocs.end(),
+ [](const DeferredLocsTy::value_type *p1,
+ const DeferredLocsTy::value_type *p2) {
+ if (p1->second->getLocStart() != p2->second->getLocStart())
+ return p1->second->getLocStart() < p2->second->getLocStart() ? -1 : 1;
+ return 0;
+ });
for (DeferredLocsTy::iterator I = DeferredLocs.begin(),
E = DeferredLocs.end(); I != E; ++I) {
const CFGBlock *Block = I->first;
Modified: cfe/trunk/lib/Frontend/PrintPreprocessedOutput.cpp
URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/Frontend/PrintPreprocessedOutput.cpp?rev=203289&r1=203288&r2=203289&view=diff
==============================================================================
--- cfe/trunk/lib/Frontend/PrintPreprocessedOutput.cpp (original)
+++ cfe/trunk/lib/Frontend/PrintPreprocessedOutput.cpp Fri Mar 7 15:35:40 2014
@@ -678,11 +678,6 @@ static void PrintPreprocessedTokens(Prep
}
}
-typedef std::pair<const IdentifierInfo *, MacroInfo *> id_macro_pair;
-static int MacroIDCompare(const id_macro_pair *LHS, const id_macro_pair *RHS) {
- return LHS->first->getName().compare(RHS->first->getName());
-}
-
static void DoPrintMacros(Preprocessor &PP, raw_ostream *OS) {
// Ignore unknown pragmas.
PP.AddPragmaHandler(new EmptyPragmaHandler());
@@ -695,13 +690,17 @@ static void DoPrintMacros(Preprocessor &
do PP.Lex(Tok);
while (Tok.isNot(tok::eof));
+ typedef std::pair<const IdentifierInfo *, MacroInfo *> id_macro_pair;
SmallVector<id_macro_pair, 128> MacrosByID;
for (Preprocessor::macro_iterator I = PP.macro_begin(), E = PP.macro_end();
I != E; ++I) {
if (I->first->hasMacroDefinition())
MacrosByID.push_back(id_macro_pair(I->first, I->second->getMacroInfo()));
}
- llvm::array_pod_sort(MacrosByID.begin(), MacrosByID.end(), MacroIDCompare);
+ llvm::array_pod_sort(MacrosByID.begin(), MacrosByID.end(),
+ [](const id_macro_pair *LHS, const id_macro_pair *RHS) {
+ return LHS->first->getName().compare(RHS->first->getName());
+ });
for (unsigned i = 0, e = MacrosByID.size(); i != e; ++i) {
MacroInfo &MI = *MacrosByID[i].second;
Modified: cfe/trunk/lib/StaticAnalyzer/Checkers/DebugCheckers.cpp
URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/StaticAnalyzer/Checkers/DebugCheckers.cpp?rev=203289&r1=203288&r2=203289&view=diff
==============================================================================
--- cfe/trunk/lib/StaticAnalyzer/Checkers/DebugCheckers.cpp (original)
+++ cfe/trunk/lib/StaticAnalyzer/Checkers/DebugCheckers.cpp Fri Mar 7 15:35:40 2014
@@ -161,11 +161,6 @@ namespace {
class ConfigDumper : public Checker< check::EndOfTranslationUnit > {
typedef AnalyzerOptions::ConfigTable Table;
- static int compareEntry(const Table::MapEntryTy *const *LHS,
- const Table::MapEntryTy *const *RHS) {
- return (*LHS)->getKey().compare((*RHS)->getKey());
- }
-
public:
void checkEndOfTranslationUnit(const TranslationUnitDecl *TU,
AnalysisManager& mgr,
@@ -176,7 +171,11 @@ public:
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);
+ llvm::array_pod_sort(Keys.begin(), Keys.end(),
+ [](const Table::MapEntryTy *const *LHS,
+ const Table::MapEntryTy *const *RHS) {
+ return (*LHS)->getKey().compare((*RHS)->getKey());
+ });
llvm::errs() << "[config]\n";
for (unsigned I = 0, E = Keys.size(); I != E; ++I)
Modified: cfe/trunk/tools/libclang/CIndex.cpp
URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/tools/libclang/CIndex.cpp?rev=203289&r1=203288&r2=203289&view=diff
==============================================================================
--- cfe/trunk/tools/libclang/CIndex.cpp (original)
+++ cfe/trunk/tools/libclang/CIndex.cpp Fri Mar 7 15:35:40 2014
@@ -762,12 +762,6 @@ bool CursorVisitor::VisitDeclaratorDecl(
return false;
}
-/// \brief Compare two base or member initializers based on their source order.
-static int CompareCXXCtorInitializers(CXXCtorInitializer *const *X,
- CXXCtorInitializer *const *Y) {
- return (*X)->getSourceOrder() - (*Y)->getSourceOrder();
-}
-
bool CursorVisitor::VisitFunctionDecl(FunctionDecl *ND) {
unsigned NumParamList = ND->getNumTemplateParameterLists();
for (unsigned i = 0; i < NumParamList; i++) {
@@ -822,9 +816,12 @@ bool CursorVisitor::VisitFunctionDecl(Fu
}
// Sort the initializers in source order
- llvm::array_pod_sort(WrittenInits.begin(), WrittenInits.end(),
- &CompareCXXCtorInitializers);
-
+ llvm::array_pod_sort(
+ WrittenInits.begin(), WrittenInits.end(),
+ [](CXXCtorInitializer *const *X, CXXCtorInitializer *const *Y) {
+ return (*X)->getSourceOrder() - (*Y)->getSourceOrder();
+ });
+
// Visit the initializers in source order
for (unsigned I = 0, N = WrittenInits.size(); I != N; ++I) {
CXXCtorInitializer *Init = WrittenInits[I];
More information about the cfe-commits
mailing list