For new archive member we only need to store the full path.
authorRafael Espindola <rafael.espindola@gmail.com>
Wed, 15 Jul 2015 22:46:53 +0000 (22:46 +0000)
committerRafael Espindola <rafael.espindola@gmail.com>
Wed, 15 Jul 2015 22:46:53 +0000 (22:46 +0000)
We were storing both the path and the file name, which was redundant
and easy to get confused up with.

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

include/llvm/Object/ArchiveWriter.h
lib/LibDriver/LibDriver.cpp
lib/Object/ArchiveWriter.cpp
tools/llvm-ar/llvm-ar.cpp

index 9d1dd61bf6623c463fdb3a4c6f5ba11d6c6af684..fc4669de1ba10591c9a4ad8ae45a5d3f426c9c35 100644 (file)
@@ -26,11 +26,9 @@ class NewArchiveIterator {
 
   object::Archive::child_iterator OldI;
 
-  StringRef NewFilename;
-
 public:
   NewArchiveIterator(object::Archive::child_iterator I, StringRef Name);
-  NewArchiveIterator(StringRef I, StringRef Name);
+  NewArchiveIterator(StringRef FileName);
   bool isNewMember() const;
   StringRef getName() const;
 
index 9814875020405e64c7d3a57203aa42da65ef735b..17680e3b3bb0f3824019e63644561ead3c722e19 100644 (file)
@@ -135,8 +135,7 @@ int llvm::libDriverMain(llvm::ArrayRef<const char*> ArgsArr) {
       llvm::errs() << Arg->getValue() << ": no such file or directory\n";
       return 1;
     }
-    Members.emplace_back(Saver.save(*Path),
-                         llvm::sys::path::filename(Arg->getValue()));
+    Members.emplace_back(Saver.save(*Path));
   }
 
   std::pair<StringRef, std::error_code> Result =
index b555b8cfdcf78612f36f147e913c7e5fff6aee19..2aa481381df285a03d61a5318b79fa212fa70a12 100644 (file)
@@ -38,8 +38,8 @@ NewArchiveIterator::NewArchiveIterator(object::Archive::child_iterator I,
                                        StringRef Name)
     : IsNewMember(false), Name(Name), OldI(I) {}
 
-NewArchiveIterator::NewArchiveIterator(StringRef NewFilename, StringRef Name)
-    : IsNewMember(true), Name(Name), NewFilename(NewFilename) {}
+NewArchiveIterator::NewArchiveIterator(StringRef FileName)
+    : IsNewMember(true), Name(FileName) {}
 
 StringRef NewArchiveIterator::getName() const { return Name; }
 
@@ -52,14 +52,14 @@ object::Archive::child_iterator NewArchiveIterator::getOld() const {
 
 StringRef NewArchiveIterator::getNew() const {
   assert(IsNewMember);
-  return NewFilename;
+  return Name;
 }
 
 llvm::ErrorOr<int>
 NewArchiveIterator::getFD(sys::fs::file_status &NewStatus) const {
   assert(IsNewMember);
   int NewFD;
-  if (auto EC = sys::fs::openFileForRead(NewFilename, NewFD))
+  if (auto EC = sys::fs::openFileForRead(Name, NewFD))
     return EC;
   assert(NewFD != -1);
 
index 92f272dfad14990af4a5e37b5e2b6d32352445ed..ec3cfcb5cad014ed265afbd24eb9d76de9a170d4 100644 (file)
@@ -437,8 +437,8 @@ static void performReadOperation(ArchiveOperation Operation,
 }
 
 void addMember(std::vector<NewArchiveIterator> &Members, StringRef FileName,
-               StringRef Name, int Pos = -1) {
-  NewArchiveIterator NI(FileName, Name);
+               int Pos = -1) {
+  NewArchiveIterator NI(FileName);
   if (Pos == -1)
     Members.push_back(NI);
   else
@@ -544,7 +544,7 @@ computeNewArchiveMembers(ArchiveOperation Operation,
         addMember(Ret, Child, Name);
         break;
       case IA_AddNewMeber:
-        addMember(Ret, *MemberI, Name);
+        addMember(Ret, *MemberI);
         break;
       case IA_Delete:
         break;
@@ -552,7 +552,7 @@ computeNewArchiveMembers(ArchiveOperation Operation,
         addMember(Moved, Child, Name);
         break;
       case IA_MoveNewMember:
-        addMember(Moved, *MemberI, Name);
+        addMember(Moved, *MemberI);
         break;
       }
       if (MemberI != Members.end())
@@ -572,12 +572,10 @@ computeNewArchiveMembers(ArchiveOperation Operation,
   assert(unsigned(InsertPos) <= Ret.size());
   Ret.insert(Ret.begin() + InsertPos, Moved.begin(), Moved.end());
 
-  Ret.insert(Ret.begin() + InsertPos, Members.size(),
-             NewArchiveIterator("", ""));
+  Ret.insert(Ret.begin() + InsertPos, Members.size(), NewArchiveIterator(""));
   int Pos = InsertPos;
   for (auto &Member : Members) {
-    StringRef Name = sys::path::filename(Member);
-    addMember(Ret, Member, Name, Pos);
+    addMember(Ret, Member, Pos);
     ++Pos;
   }
 
@@ -736,7 +734,7 @@ static void runMRIScript() {
       break;
     }
     case MRICommand::AddMod:
-      addMember(NewMembers, Rest, sys::path::filename(Rest));
+      addMember(NewMembers, Rest);
       break;
     case MRICommand::Create:
       Create = true;