diff --git a/src/rustllvm/ArchiveWrapper.cpp b/src/rustllvm/ArchiveWrapper.cpp index 12cd81ec70044..b7a5897ad2387 100644 --- a/src/rustllvm/ArchiveWrapper.cpp +++ b/src/rustllvm/ArchiveWrapper.cpp @@ -19,15 +19,9 @@ using namespace llvm::object; struct RustArchiveMember { const char *filename; const char *name; - Archive::Child child; + Archive::Child *child; - RustArchiveMember(): filename(NULL), name(NULL), -#if LLVM_VERSION_GE(3, 8) - child(NULL, NULL, NULL) -#else - child(NULL, NULL) -#endif - {} + RustArchiveMember(): filename(NULL), name(NULL), child(NULL){ } ~RustArchiveMember() {} }; @@ -191,7 +185,7 @@ LLVMRustArchiveMemberNew(char *Filename, char *Name, Member->filename = Filename; Member->name = Name; if (child) - Member->child = *child; + Member->child = child; return Member; } @@ -232,9 +226,9 @@ LLVMRustWriteArchive(char *Dst, #endif } else { #if LLVM_VERSION_LE(3, 8) - Members.push_back(NewArchiveIterator(Member->child, Member->name)); + Members.push_back(NewArchiveIterator(*Member->child, Member->name)); #else - Expected MOrErr = NewArchiveMember::getOldMember(Member->child, true); + Expected MOrErr = NewArchiveMember::getOldMember(*Member->child, true); if (!MOrErr) { LLVMRustSetLastError(toString(MOrErr.takeError()).c_str()); return LLVMRustResult::Failure;