diff options
| author | Alex Crichton <alex@alexcrichton.com> | 2015-10-22 22:07:19 -0700 |
|---|---|---|
| committer | Alex Crichton <alex@alexcrichton.com> | 2016-01-29 16:25:20 -0800 |
| commit | d1cace17af31ddb21aeb8a3d94cb3eda934047d9 (patch) | |
| tree | 90a8ea64593d7d5330cc1466ba13db135e0b593d /src/rustllvm/RustWrapper.cpp | |
| parent | 142214d1f2232a4e88ff7bd99951b01f36052c61 (diff) | |
| download | rust-d1cace17af31ddb21aeb8a3d94cb3eda934047d9.tar.gz rust-d1cace17af31ddb21aeb8a3d94cb3eda934047d9.zip | |
trans: Upgrade LLVM
This brings some routine upgrades to the bundled LLVM that we're using, the most notable of which is a bug fix to the way we handle range asserts when loading the discriminant of an enum. This fix ended up being very similar to f9d4149c where we basically can't have a range assert when loading a discriminant due to filling drop, and appropriate flags were added to communicate this to `trans::adt`.
Diffstat (limited to 'src/rustllvm/RustWrapper.cpp')
| -rw-r--r-- | src/rustllvm/RustWrapper.cpp | 18 |
1 files changed, 17 insertions, 1 deletions
diff --git a/src/rustllvm/RustWrapper.cpp b/src/rustllvm/RustWrapper.cpp index 5a9c096e5f5..a625a75933d 100644 --- a/src/rustllvm/RustWrapper.cpp +++ b/src/rustllvm/RustWrapper.cpp @@ -348,6 +348,19 @@ extern "C" LLVMMetadataRef LLVMDIBuilderCreateFunction( LLVMValueRef Fn, LLVMMetadataRef TParam, LLVMMetadataRef Decl) { +#if LLVM_VERSION_MINOR >= 8 + DITemplateParameterArray TParams = + DITemplateParameterArray(unwrap<MDTuple>(TParam)); + DISubprogram *Sub = Builder->createFunction( + unwrapDI<DIScope>(Scope), Name, LinkageName, + unwrapDI<DIFile>(File), LineNo, + unwrapDI<DISubroutineType>(Ty), isLocalToUnit, isDefinition, ScopeLine, + Flags, isOptimized, + TParams, + unwrapDIptr<DISubprogram>(Decl)); + unwrap<Function>(Fn)->setSubprogram(Sub); + return wrap(Sub); +#else return wrap(Builder->createFunction( unwrapDI<DIScope>(Scope), Name, LinkageName, unwrapDI<DIFile>(File), LineNo, @@ -356,6 +369,7 @@ extern "C" LLVMMetadataRef LLVMDIBuilderCreateFunction( unwrap<Function>(Fn), unwrapDIptr<MDNode>(TParam), unwrapDIptr<MDNode>(Decl))); +#endif } extern "C" LLVMMetadataRef LLVMDIBuilderCreateBasicType( @@ -830,7 +844,9 @@ LLVMRustLinkInExternalBitcode(LLVMModuleRef dst, char *bc, size_t len) { #if LLVM_VERSION_MINOR >= 6 raw_string_ostream Stream(Err); DiagnosticPrinterRawOStream DP(Stream); -#if LLVM_VERSION_MINOR >= 7 +#if LLVM_VERSION_MINOR >= 8 + if (Linker::linkModules(*Dst, std::move(Src.get()))) { +#elif LLVM_VERSION_MINOR >= 7 if (Linker::LinkModules(Dst, Src->get(), [&](const DiagnosticInfo &DI) { DI.print(DP); })) { #else if (Linker::LinkModules(Dst, *Src, [&](const DiagnosticInfo &DI) { DI.print(DP); })) { |
