@@ -91,10 +91,14 @@ extern "C" void LLVMRemoveReturnAttribute(LLVMValueRef Fn, LLVMAttribute PA) {
91
91
AttributeSet::get (A->getContext (), AttributeSet::ReturnIndex, B));
92
92
}
93
93
94
+ #if LLVM_VERSION_MINOR >= 5
94
95
extern " C" void LLVMAddColdAttribute (LLVMValueRef Fn) {
95
96
Function *A = unwrap<Function>(Fn);
96
97
A->addAttribute (AttributeSet::FunctionIndex, Attribute::Cold);
97
98
}
99
+ #else
100
+ extern " C" void LLVMAddColdAttribute (LLVMValueRef Fn) {}
101
+ #endif
98
102
99
103
extern " C" LLVMValueRef LLVMBuildAtomicLoad (LLVMBuilderRef B,
100
104
LLVMValueRef source,
@@ -156,7 +160,11 @@ DIT unwrapDI(LLVMValueRef ref) {
156
160
return DIT (ref ? unwrap<MDNode>(ref) : NULL );
157
161
}
158
162
163
+ #if LLVM_VERSION_MINOR >= 5
159
164
extern " C" const uint32_t LLVMRustDebugMetadataVersion = DEBUG_METADATA_VERSION;
165
+ #else
166
+ extern " C" const uint32_t LLVMRustDebugMetadataVersion = 1 ;
167
+ #endif
160
168
161
169
extern " C" void LLVMRustAddModuleFlag (LLVMModuleRef M,
162
170
const char *name,
@@ -278,8 +286,12 @@ extern "C" LLVMValueRef LLVMDIBuilderCreateStructType(
278
286
unwrapDI<DIType>(DerivedFrom),
279
287
unwrapDI<DIArray>(Elements),
280
288
RunTimeLang,
281
- unwrapDI<DIType>(VTableHolder),
282
- UniqueId));
289
+ unwrapDI<DIType>(VTableHolder)
290
+ #if LLVM_VERSION_MINOR >= 5
291
+ ,UniqueId));
292
+ #else
293
+ ));
294
+ #endif
283
295
}
284
296
285
297
extern " C" LLVMValueRef LLVMDIBuilderCreateMemberType (
@@ -440,8 +452,12 @@ extern "C" LLVMValueRef LLVMDIBuilderCreateUnionType(
440
452
AlignInBits,
441
453
Flags,
442
454
unwrapDI<DIArray>(Elements),
443
- RunTimeLang,
444
- UniqueId));
455
+ RunTimeLang
456
+ #if LLVM_VERSION_MINOR >= 5
457
+ ,UniqueId));
458
+ #else
459
+ ));
460
+ #endif
445
461
}
446
462
447
463
extern " C" void LLVMSetUnnamedAddr (LLVMValueRef Value, LLVMBool Unnamed) {
@@ -541,6 +557,7 @@ extern "C" char *LLVMValueToString(LLVMValueRef Value) {
541
557
return strdup (os.str ().data ());
542
558
}
543
559
560
+ #if LLVM_VERSION_MINOR >= 5
544
561
extern " C" bool
545
562
LLVMRustLinkInExternalBitcode (LLVMModuleRef dst, char *bc, size_t len) {
546
563
Module *Dst = unwrap (dst);
@@ -559,6 +576,26 @@ LLVMRustLinkInExternalBitcode(LLVMModuleRef dst, char *bc, size_t len) {
559
576
}
560
577
return true ;
561
578
}
579
+ #else
580
+ extern " C" bool
581
+ LLVMRustLinkInExternalBitcode (LLVMModuleRef dst, char *bc, size_t len) {
582
+ Module *Dst = unwrap (dst);
583
+ MemoryBuffer* buf = MemoryBuffer::getMemBufferCopy (StringRef (bc, len));
584
+ std::string Err;
585
+ Module *Src = llvm::getLazyBitcodeModule (buf, Dst->getContext (), &Err);
586
+ if (!Src) {
587
+ LLVMRustError = Err.c_str ();
588
+ delete buf;
589
+ return false ;
590
+ }
591
+
592
+ if (Linker::LinkModules (Dst, Src, Linker::DestroySource, &Err)) {
593
+ LLVMRustError = Err.c_str ();
594
+ return false ;
595
+ }
596
+ return true ;
597
+ }
598
+ #endif
562
599
563
600
extern " C" void *
564
601
LLVMRustOpenArchive (char *path) {
@@ -578,9 +615,14 @@ LLVMRustOpenArchive(char *path) {
578
615
579
616
extern " C" const char *
580
617
LLVMRustArchiveReadSection (Archive *ar, char *name, size_t *size) {
581
- for (Archive::child_iterator child = ar->child_begin (),
582
- end = ar->child_end ();
583
- child != end; ++child) {
618
+ #if LLVM_VERSION_MINOR >= 5
619
+ Archive::child_iterator child = ar->child_begin (),
620
+ end = ar->child_end ();
621
+ #else
622
+ Archive::child_iterator child = ar->begin_children (),
623
+ end = ar->end_children ();
624
+ #endif
625
+ for (; child != end; ++child) {
584
626
StringRef sect_name;
585
627
error_code err = child->getName (sect_name);
586
628
if (err) continue ;
@@ -598,8 +640,15 @@ LLVMRustDestroyArchive(Archive *ar) {
598
640
delete ar;
599
641
}
600
642
643
+ #if LLVM_VERSION_MINOR >= 5
601
644
extern " C" void
602
645
LLVMRustSetDLLExportStorageClass (LLVMValueRef Value) {
603
646
GlobalValue *V = unwrap<GlobalValue>(Value);
604
647
V->setDLLStorageClass (GlobalValue::DLLExportStorageClass);
605
648
}
649
+ #else
650
+ extern " C" void
651
+ LLVMRustSetDLLExportStorageClass (LLVMValueRef Value) {
652
+ LLVMSetLinkage (Value, LLVMDLLExportLinkage);
653
+ }
654
+ #endif
0 commit comments