diff --git a/src/rustllvm/ArchiveWrapper.cpp b/src/rustllvm/ArchiveWrapper.cpp index a40f0a245d17e..2cf6277e05722 100644 --- a/src/rustllvm/ArchiveWrapper.cpp +++ b/src/rustllvm/ArchiveWrapper.cpp @@ -163,12 +163,20 @@ LLVMRustWriteArchive(char *Dst, auto Member = NewMembers[i]; assert(Member->name); if (Member->filename) { +#if LLVM_VERSION_MINOR >= 8 + Members.push_back(NewArchiveIterator(Member->filename)); +#else Members.push_back(NewArchiveIterator(Member->filename, Member->name)); +#endif } else { Members.push_back(NewArchiveIterator(Member->child, Member->name)); } } +#if LLVM_VERSION_MINOR >= 8 + auto pair = writeArchive(Dst, Members, WriteSymbtab, Kind, true, false); +#else auto pair = writeArchive(Dst, Members, WriteSymbtab, Kind, true); +#endif if (!pair.second) return 0; LLVMRustSetLastError(pair.second.message().c_str()); diff --git a/src/rustllvm/PassWrapper.cpp b/src/rustllvm/PassWrapper.cpp index 16c35970bfe77..b27a622136f74 100644 --- a/src/rustllvm/PassWrapper.cpp +++ b/src/rustllvm/PassWrapper.cpp @@ -49,7 +49,9 @@ LLVMInitializePasses() { initializeVectorization(Registry); initializeIPO(Registry); initializeAnalysis(Registry); +#if LLVM_VERSION_MINOR <= 7 initializeIPA(Registry); +#endif initializeTransformUtils(Registry); initializeInstCombine(Registry); initializeInstrumentation(Registry); diff --git a/src/rustllvm/RustWrapper.cpp b/src/rustllvm/RustWrapper.cpp index 9ce34c40730ce..5a9c096e5f543 100644 --- a/src/rustllvm/RustWrapper.cpp +++ b/src/rustllvm/RustWrapper.cpp @@ -320,7 +320,9 @@ extern "C" LLVMMetadataRef LLVMDIBuilderCreateSubroutineType( LLVMMetadataRef File, LLVMMetadataRef ParameterTypes) { return wrap(Builder->createSubroutineType( +#if LLVM_VERSION_MINOR <= 7 unwrapDI(File), +#endif #if LLVM_VERSION_MINOR >= 7 DITypeRefArray(unwrap(ParameterTypes)))); #elif LLVM_VERSION_MINOR >= 6 @@ -502,11 +504,27 @@ extern "C" LLVMMetadataRef LLVMDIBuilderCreateVariable( )); } #endif +#if LLVM_VERSION_MINOR >= 8 + if (Tag == 0x100) { // DW_TAG_auto_variable + return wrap(Builder->createAutoVariable( + unwrapDI(Scope), Name, + unwrapDI(File), + LineNo, + unwrapDI(Ty), AlwaysPreserve, Flags)); + } else { + return wrap(Builder->createParameterVariable( + unwrapDI(Scope), Name, ArgNo, + unwrapDI(File), + LineNo, + unwrapDI(Ty), AlwaysPreserve, Flags)); + } +#else return wrap(Builder->createLocalVariable(Tag, unwrapDI(Scope), Name, unwrapDI(File), LineNo, unwrapDI(Ty), AlwaysPreserve, Flags, ArgNo)); +#endif } extern "C" LLVMMetadataRef LLVMDIBuilderCreateArrayType(