]> granicus.if.org Git - clang/commitdiff
Sort ObjCProtocolDecls with array_pod_sort.
authorBenjamin Kramer <benny.kra@googlemail.com>
Sat, 14 Mar 2015 13:32:49 +0000 (13:32 +0000)
committerBenjamin Kramer <benny.kra@googlemail.com>
Sat, 14 Mar 2015 13:32:49 +0000 (13:32 +0000)
The predicate is essentially a string comparison. NFC.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@232264 91177308-0d34-0410-b5e6-96231b3b80d8

lib/AST/ASTContext.cpp

index 4be2436dc63a50d85439cddc899b232debb527a7..932bc1cb86d2d8bd95281bd8ef6f1e1fcc4184b3 100644 (file)
@@ -3521,9 +3521,9 @@ QualType ASTContext::getPackExpansionType(QualType Pattern,
 
 /// CmpProtocolNames - Comparison predicate for sorting protocols
 /// alphabetically.
-static bool CmpProtocolNames(const ObjCProtocolDecl *LHS,
-                            const ObjCProtocolDecl *RHS) {
-  return LHS->getDeclName() < RHS->getDeclName();
+static int CmpProtocolNames(ObjCProtocolDecl *const *LHS,
+                            ObjCProtocolDecl *const *RHS) {
+  return DeclarationName::compare((*LHS)->getDeclName(), (*RHS)->getDeclName());
 }
 
 static bool areSortedAndUniqued(ObjCProtocolDecl * const *Protocols,
@@ -3534,7 +3534,7 @@ static bool areSortedAndUniqued(ObjCProtocolDecl * const *Protocols,
     return false;
   
   for (unsigned i = 1; i != NumProtocols; ++i)
-    if (!CmpProtocolNames(Protocols[i-1], Protocols[i]) ||
+    if (CmpProtocolNames(&Protocols[i - 1], &Protocols[i]) >= 0 ||
         Protocols[i]->getCanonicalDecl() != Protocols[i])
       return false;
   return true;
@@ -3545,7 +3545,7 @@ static void SortAndUniqueProtocols(ObjCProtocolDecl **Protocols,
   ObjCProtocolDecl **ProtocolsEnd = Protocols+NumProtocols;
 
   // Sort protocols, keyed by name.
-  std::sort(Protocols, Protocols+NumProtocols, CmpProtocolNames);
+  llvm::array_pod_sort(Protocols, ProtocolsEnd, CmpProtocolNames);
 
   // Canonicalize.
   for (unsigned I = 0, N = NumProtocols; I != N; ++I)