@@ -496,9 +496,11 @@ static DINode::DIFlags fromRust(LLVMRustDIFlags Flags) {
496496 if (isSet (Flags & LLVMRustDIFlags::FlagAppleBlock)) {
497497 Result |= DINode::DIFlags::FlagAppleBlock;
498498 }
499+ #if LLVM_VERSION_LT(10, 0)
499500 if (isSet (Flags & LLVMRustDIFlags::FlagBlockByrefStruct)) {
500501 Result |= DINode::DIFlags::FlagBlockByrefStruct;
501502 }
503+ #endif
502504 if (isSet (Flags & LLVMRustDIFlags::FlagVirtual)) {
503505 Result |= DINode::DIFlags::FlagVirtual;
504506 }
@@ -825,6 +827,9 @@ extern "C" LLVMMetadataRef LLVMRustDIBuilderCreateStaticVariable(
825827 llvm::DIGlobalVariableExpression *VarExpr = Builder->createGlobalVariableExpression (
826828 unwrapDI<DIDescriptor>(Context), Name, LinkageName,
827829 unwrapDI<DIFile>(File), LineNo, unwrapDI<DIType>(Ty), IsLocalToUnit,
830+ #if LLVM_VERSION_GE(10, 0)
831+ /* isDefined */ true ,
832+ #endif
828833 InitExpr, unwrapDIPtr<MDNode>(Decl),
829834#if LLVM_VERSION_GE(8, 0)
830835 /* templateParams */ nullptr ,
@@ -998,11 +1003,19 @@ inline section_iterator *unwrap(LLVMSectionIteratorRef SI) {
9981003
9991004extern " C" size_t LLVMRustGetSectionName (LLVMSectionIteratorRef SI,
10001005 const char **Ptr) {
1006+ #if LLVM_VERSION_GE(10, 0)
1007+ auto NameOrErr = (*unwrap (SI))->getName ();
1008+ if (!NameOrErr)
1009+ report_fatal_error (NameOrErr.takeError ());
1010+ *Ptr = NameOrErr->data ();
1011+ return NameOrErr->size ();
1012+ #else
10011013 StringRef Ret;
10021014 if (std::error_code EC = (*unwrap (SI))->getName (Ret))
10031015 report_fatal_error (EC.message ());
10041016 *Ptr = Ret.data ();
10051017 return Ret.size ();
1018+ #endif
10061019}
10071020
10081021// LLVMArrayType function does not support 64-bit ElementCount
@@ -1253,20 +1266,34 @@ extern "C" LLVMValueRef LLVMRustBuildMemCpy(LLVMBuilderRef B,
12531266 LLVMValueRef Dst, unsigned DstAlign,
12541267 LLVMValueRef Src, unsigned SrcAlign,
12551268 LLVMValueRef Size, bool IsVolatile) {
1269+ #if LLVM_VERSION_GE(10, 0)
1270+ return wrap (unwrap (B)->CreateMemCpy (
1271+ unwrap (Dst), MaybeAlign (DstAlign),
1272+ unwrap (Src), MaybeAlign (SrcAlign),
1273+ unwrap (Size), IsVolatile));
1274+ #else
12561275 return wrap (unwrap (B)->CreateMemCpy (
12571276 unwrap (Dst), DstAlign,
12581277 unwrap (Src), SrcAlign,
12591278 unwrap (Size), IsVolatile));
1279+ #endif
12601280}
12611281
12621282extern " C" LLVMValueRef LLVMRustBuildMemMove (LLVMBuilderRef B,
12631283 LLVMValueRef Dst, unsigned DstAlign,
12641284 LLVMValueRef Src, unsigned SrcAlign,
12651285 LLVMValueRef Size, bool IsVolatile) {
1286+ #if LLVM_VERSION_GE(10, 0)
1287+ return wrap (unwrap (B)->CreateMemMove (
1288+ unwrap (Dst), MaybeAlign (DstAlign),
1289+ unwrap (Src), MaybeAlign (SrcAlign),
1290+ unwrap (Size), IsVolatile));
1291+ #else
12661292 return wrap (unwrap (B)->CreateMemMove (
12671293 unwrap (Dst), DstAlign,
12681294 unwrap (Src), SrcAlign,
12691295 unwrap (Size), IsVolatile));
1296+ #endif
12701297}
12711298
12721299extern " C" LLVMValueRef
@@ -1450,7 +1477,11 @@ struct LLVMRustModuleBuffer {
14501477
14511478extern " C" LLVMRustModuleBuffer*
14521479LLVMRustModuleBufferCreate (LLVMModuleRef M) {
1480+ #if LLVM_VERSION_GE(10, 0)
1481+ auto Ret = std::make_unique<LLVMRustModuleBuffer>();
1482+ #else
14531483 auto Ret = llvm::make_unique<LLVMRustModuleBuffer>();
1484+ #endif
14541485 {
14551486 raw_string_ostream OS (Ret->data );
14561487 {
0 commit comments