OSDN Git Service

Move code to a helper function. NFC.
authorRafael Espindola <rafael.espindola@gmail.com>
Fri, 22 Sep 2017 18:40:14 +0000 (18:40 +0000)
committerRafael Espindola <rafael.espindola@gmail.com>
Fri, 22 Sep 2017 18:40:14 +0000 (18:40 +0000)
Part of a patch by Jake Ehrlich!

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

lib/Object/ArchiveWriter.cpp

index 4586d44..19a46c0 100644 (file)
@@ -277,6 +277,18 @@ static sys::TimePoint<std::chrono::seconds> now(bool Deterministic) {
   return sys::TimePoint<seconds>();
 }
 
+static bool isArchiveSymbol(const object::BasicSymbolRef &S) {
+  uint32_t Symflags = S.getFlags();
+  if (Symflags & object::SymbolRef::SF_FormatSpecific)
+    return false;
+  if (!(Symflags & object::SymbolRef::SF_Global))
+    return false;
+  if (Symflags & object::SymbolRef::SF_Undefined &&
+      !(Symflags & object::SymbolRef::SF_Indirect))
+    return false;
+  return true;
+}
+
 // Returns the offset of the first reference to a member offset.
 static Expected<unsigned>
 writeSymbolTable(raw_fd_ostream &Out, object::Archive::Kind Kind,
@@ -310,13 +322,7 @@ writeSymbolTable(raw_fd_ostream &Out, object::Archive::Kind Kind,
     }
 
     for (const object::BasicSymbolRef &S : Obj.symbols()) {
-      uint32_t Symflags = S.getFlags();
-      if (Symflags & object::SymbolRef::SF_FormatSpecific)
-        continue;
-      if (!(Symflags & object::SymbolRef::SF_Global))
-        continue;
-      if (Symflags & object::SymbolRef::SF_Undefined &&
-          !(Symflags & object::SymbolRef::SF_Indirect))
+      if (!isArchiveSymbol(S))
         continue;
 
       unsigned NameOffset = NameOS.tell();