diff options
author | Lang Hames <lhames@gmail.com> | 2016-07-14 00:37:04 +0000 |
---|---|---|
committer | Lang Hames <lhames@gmail.com> | 2016-07-14 00:37:04 +0000 |
commit | ae610ab528a382a393aae26d2d67cee05cabe634 (patch) | |
tree | bb4178e75d234c71dac75810b4662a0f979227f0 /llvm/tools/llvm-ar/llvm-ar.cpp | |
parent | 7f781aba9755633c53210db02d51f6f56d11ea48 (diff) | |
download | bcm5719-llvm-ae610ab528a382a393aae26d2d67cee05cabe634.tar.gz bcm5719-llvm-ae610ab528a382a393aae26d2d67cee05cabe634.zip |
[Object] Revert r275316, Archive::child_iterator changes, while I update lld.
Should fix the bots broken by r275316.
llvm-svn: 275353
Diffstat (limited to 'llvm/tools/llvm-ar/llvm-ar.cpp')
-rw-r--r-- | llvm/tools/llvm-ar/llvm-ar.cpp | 68 |
1 files changed, 32 insertions, 36 deletions
diff --git a/llvm/tools/llvm-ar/llvm-ar.cpp b/llvm/tools/llvm-ar/llvm-ar.cpp index 865152b6af8..d52355216b0 100644 --- a/llvm/tools/llvm-ar/llvm-ar.cpp +++ b/llvm/tools/llvm-ar/llvm-ar.cpp @@ -405,37 +405,35 @@ static void performReadOperation(ArchiveOperation Operation, fail("extracting from a thin archive is not supported"); bool Filter = !Members.empty(); - { - Error Err; - for (auto &C : OldArchive->children(Err)) { - ErrorOr<StringRef> NameOrErr = C.getName(); - failIfError(NameOrErr.getError()); - StringRef Name = NameOrErr.get(); - - if (Filter) { - auto I = std::find(Members.begin(), Members.end(), Name); - if (I == Members.end()) - continue; - Members.erase(I); - } + for (auto &ChildOrErr : OldArchive->children()) { + failIfError(ChildOrErr.getError()); + const object::Archive::Child &C = *ChildOrErr; + + ErrorOr<StringRef> NameOrErr = C.getName(); + failIfError(NameOrErr.getError()); + StringRef Name = NameOrErr.get(); + + if (Filter) { + auto I = std::find(Members.begin(), Members.end(), Name); + if (I == Members.end()) + continue; + Members.erase(I); + } - switch (Operation) { - default: - llvm_unreachable("Not a read operation"); - case Print: - doPrint(Name, C); - break; - case DisplayTable: - doDisplayTable(Name, C); - break; - case Extract: - doExtract(Name, C); - break; - } + switch (Operation) { + default: + llvm_unreachable("Not a read operation"); + case Print: + doPrint(Name, C); + break; + case DisplayTable: + doDisplayTable(Name, C); + break; + case Extract: + doExtract(Name, C); + break; } - failIfError(std::move(Err)); } - if (Members.empty()) return; for (StringRef Name : Members) @@ -533,8 +531,9 @@ computeNewArchiveMembers(ArchiveOperation Operation, int InsertPos = -1; StringRef PosName = sys::path::filename(RelPos); if (OldArchive) { - Error Err; - for (auto &Child : OldArchive->children(Err)) { + for (auto &ChildOrErr : OldArchive->children()) { + failIfError(ChildOrErr.getError()); + auto &Child = ChildOrErr.get(); int Pos = Ret.size(); ErrorOr<StringRef> NameOrErr = Child.getName(); failIfError(NameOrErr.getError()); @@ -569,7 +568,6 @@ computeNewArchiveMembers(ArchiveOperation Operation, if (MemberI != Members.end()) Members.erase(MemberI); } - failIfError(std::move(Err)); } if (Operation == Delete) @@ -766,11 +764,9 @@ static void runMRIScript() { "Could not parse library"); Archives.push_back(std::move(*LibOrErr)); object::Archive &Lib = *Archives.back(); - { - Error Err; - for (auto &Member : Lib.children(Err)) - addMember(NewMembers, Member); - failIfError(std::move(Err)); + for (auto &MemberOrErr : Lib.children()) { + failIfError(MemberOrErr.getError()); + addMember(NewMembers, *MemberOrErr); } break; } |