[llvm] r266172 - LTOInternalize: Use a StringSet instead of a sorted vector and a binary search query for each function

Mehdi Amini via llvm-commits llvm-commits at lists.llvm.org
Tue Apr 12 23:32:04 PDT 2016


Author: mehdi_amini
Date: Wed Apr 13 01:32:04 2016
New Revision: 266172

URL: http://llvm.org/viewvc/llvm-project?rev=266172&view=rev
Log:
LTOInternalize: Use a StringSet instead of a sorted vector and a binary search query for each function

From: Mehdi Amini <mehdi.amini at apple.com>

Modified:
    llvm/trunk/lib/LTO/LTOInternalize.cpp

Modified: llvm/trunk/lib/LTO/LTOInternalize.cpp
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/LTO/LTOInternalize.cpp?rev=266172&r1=266171&r2=266172&view=diff
==============================================================================
--- llvm/trunk/lib/LTO/LTOInternalize.cpp (original)
+++ llvm/trunk/lib/LTO/LTOInternalize.cpp Wed Apr 13 01:32:04 2016
@@ -46,7 +46,7 @@ private:
 
   // Temps
   llvm::Mangler Mangler;
-  std::vector<StringRef> Libcalls;
+  StringSet<> Libcalls;
 
   // Output
   SmallPtrSetImpl<const GlobalValue *> &AsmUsed;
@@ -64,7 +64,7 @@ private:
          I != E; ++I) {
       LibFunc::Func F = static_cast<LibFunc::Func>(I);
       if (TLI.has(F))
-        Libcalls.push_back(TLI.getName(F));
+        Libcalls.insert(TLI.getName(F));
     }
 
     SmallPtrSet<const TargetLowering *, 1> TLSet;
@@ -80,12 +80,8 @@ private:
              I != E; ++I)
           if (const char *Name =
                   Lowering->getLibcallName(static_cast<RTLIB::Libcall>(I)))
-            Libcalls.push_back(Name);
+            Libcalls.insert(Name);
     }
-
-    array_pod_sort(Libcalls.begin(), Libcalls.end());
-    Libcalls.erase(std::unique(Libcalls.begin(), Libcalls.end()),
-                   Libcalls.end());
   }
 
   void findAsmUses(const GlobalValue &GV) {
@@ -108,8 +104,7 @@ private:
     // optimizations like -globalopt, causing problems when later optimizations
     // add new library calls (e.g., llvm.memset => memset and printf => puts).
     // Leave it to the linker to remove any dead code (e.g. with -dead_strip).
-    if (isa<Function>(GV) &&
-        std::binary_search(Libcalls.begin(), Libcalls.end(), GV.getName()))
+    if (isa<Function>(GV) && Libcalls.count(GV.getName()))
       AsmUsed.insert(&GV);
   }
 };




More information about the llvm-commits mailing list