From: Jiri Slaby Date: Fri, 15 Jun 2018 08:28:22 +0200 Subject: llvm38: archive child iterator changes Patch-mainline: no After LLVM commit 25569fdcdab0, archive iterator returns object::Archive::Child instead of child_iterator, adapt to that. Signed-off-by: Jiri Slaby --- lib/Module/ModuleUtil.cpp | 20 ++++++++++++++++---- 1 file changed, 16 insertions(+), 4 deletions(-) diff --git a/lib/Module/ModuleUtil.cpp b/lib/Module/ModuleUtil.cpp index 025b7374fcf9..e6d592b135b6 100644 --- a/lib/Module/ModuleUtil.cpp +++ b/lib/Module/ModuleUtil.cpp @@ -207,8 +207,19 @@ static bool linkBCA(object::Archive* archive, Module* composite, std::string& er StringRef memberName; #if LLVM_VERSION_CODE >= LLVM_VERSION(3, 5) - ErrorOr memberNameErr = AI->getName(); - std::error_code ec = memberNameErr.getError(); + std::error_code ec; +#if LLVM_VERSION_CODE >= LLVM_VERSION(3, 8) + ErrorOr childErr = *AI; + ec = childErr.getError(); + if (ec) { + errorMessage = ec.message(); + return false; + } +#else + object::Archive::child_iterator childErr = AI; +#endif + ErrorOr memberNameErr = childErr->getName(); + ec = memberNameErr.getError(); if (!ec) { memberName = memberNameErr.get(); #else @@ -226,7 +237,8 @@ static bool linkBCA(object::Archive* archive, Module* composite, std::string& er } #if LLVM_VERSION_CODE >= LLVM_VERSION(3, 5) - ErrorOr > child = AI->getAsBinary(); + ErrorOr > child = + childErr->getAsBinary(); ec = child.getError(); #else OwningPtr child; @@ -235,7 +247,7 @@ static bool linkBCA(object::Archive* archive, Module* composite, std::string& er if (ec) { // If we can't open as a binary object file its hopefully a bitcode file #if LLVM_VERSION_CODE >= LLVM_VERSION(3, 6) - ErrorOr buff = AI->getMemoryBufferRef(); + ErrorOr buff = childErr->getMemoryBufferRef(); ec = buff.getError(); #elif LLVM_VERSION_CODE >= LLVM_VERSION(3, 5) ErrorOr > buffErr = AI->getMemoryBuffer(); -- 2.17.1