Skip to content

Commit b04b23b

Browse files
author
Jonathan Turner
authored
Rollup merge of rust-lang#36742 - shepmaster:llvm-4-preamble, r=alexcrichton
Extend preprocessor LLVM version checks to support LLVM 4.x This doesn't actually do anything for LLVM 4.x yet, but sets the stage.
2 parents 5f84df6 + e6e117c commit b04b23b

File tree

4 files changed

+43
-34
lines changed

4 files changed

+43
-34
lines changed

src/rustllvm/ArchiveWrapper.cpp

+12-12
Original file line numberDiff line numberDiff line change
@@ -22,7 +22,7 @@ struct RustArchiveMember {
2222
Archive::Child child;
2323

2424
RustArchiveMember(): filename(NULL), name(NULL),
25-
#if LLVM_VERSION_MINOR >= 8
25+
#if LLVM_VERSION_GE(3, 8)
2626
child(NULL, NULL, NULL)
2727
#else
2828
child(NULL, NULL)
@@ -35,7 +35,7 @@ struct RustArchiveMember {
3535
struct RustArchiveIterator {
3636
Archive::child_iterator cur;
3737
Archive::child_iterator end;
38-
#if LLVM_VERSION_MINOR >= 9
38+
#if LLVM_VERSION_GE(3, 9)
3939
Error err;
4040
#endif
4141
};
@@ -81,15 +81,15 @@ LLVMRustOpenArchive(char *path) {
8181
return nullptr;
8282
}
8383

84-
#if LLVM_VERSION_MINOR <= 8
84+
#if LLVM_VERSION_LE(3, 8)
8585
ErrorOr<std::unique_ptr<Archive>> archive_or =
8686
#else
8787
Expected<std::unique_ptr<Archive>> archive_or =
8888
#endif
8989
Archive::create(buf_or.get()->getMemBufferRef());
9090

9191
if (!archive_or) {
92-
#if LLVM_VERSION_MINOR <= 8
92+
#if LLVM_VERSION_LE(3, 8)
9393
LLVMRustSetLastError(archive_or.getError().message().c_str());
9494
#else
9595
LLVMRustSetLastError(toString(archive_or.takeError()).c_str());
@@ -112,7 +112,7 @@ extern "C" LLVMRustArchiveIteratorRef
112112
LLVMRustArchiveIteratorNew(LLVMRustArchiveRef ra) {
113113
Archive *ar = ra->getBinary();
114114
RustArchiveIterator *rai = new RustArchiveIterator();
115-
#if LLVM_VERSION_MINOR <= 8
115+
#if LLVM_VERSION_LE(3, 8)
116116
rai->cur = ar->child_begin();
117117
#else
118118
rai->cur = ar->child_begin(rai->err);
@@ -127,15 +127,15 @@ LLVMRustArchiveIteratorNew(LLVMRustArchiveRef ra) {
127127

128128
extern "C" LLVMRustArchiveChildConstRef
129129
LLVMRustArchiveIteratorNext(LLVMRustArchiveIteratorRef rai) {
130-
#if LLVM_VERSION_MINOR >= 9
130+
#if LLVM_VERSION_GE(3, 9)
131131
if (rai->err) {
132132
LLVMRustSetLastError(toString(std::move(rai->err)).c_str());
133133
return NULL;
134134
}
135135
#endif
136136
if (rai->cur == rai->end)
137137
return NULL;
138-
#if LLVM_VERSION_MINOR == 8
138+
#if LLVM_VERSION_EQ(3, 8)
139139
const ErrorOr<Archive::Child>* cur = rai->cur.operator->();
140140
if (!*cur) {
141141
LLVMRustSetLastError(cur->getError().message().c_str());
@@ -207,7 +207,7 @@ LLVMRustWriteArchive(char *Dst,
207207
bool WriteSymbtab,
208208
LLVMRustArchiveKind rust_kind) {
209209

210-
#if LLVM_VERSION_MINOR <= 8
210+
#if LLVM_VERSION_LE(3, 8)
211211
std::vector<NewArchiveIterator> Members;
212212
#else
213213
std::vector<NewArchiveMember> Members;
@@ -218,20 +218,20 @@ LLVMRustWriteArchive(char *Dst,
218218
auto Member = NewMembers[i];
219219
assert(Member->name);
220220
if (Member->filename) {
221-
#if LLVM_VERSION_MINOR >= 9
221+
#if LLVM_VERSION_GE(3, 9)
222222
Expected<NewArchiveMember> MOrErr = NewArchiveMember::getFile(Member->filename, true);
223223
if (!MOrErr) {
224224
LLVMRustSetLastError(toString(MOrErr.takeError()).c_str());
225225
return LLVMRustResult::Failure;
226226
}
227227
Members.push_back(std::move(*MOrErr));
228-
#elif LLVM_VERSION_MINOR == 8
228+
#elif LLVM_VERSION_EQ(3, 8)
229229
Members.push_back(NewArchiveIterator(Member->filename));
230230
#else
231231
Members.push_back(NewArchiveIterator(Member->filename, Member->name));
232232
#endif
233233
} else {
234-
#if LLVM_VERSION_MINOR <= 8
234+
#if LLVM_VERSION_LE(3, 8)
235235
Members.push_back(NewArchiveIterator(Member->child, Member->name));
236236
#else
237237
Expected<NewArchiveMember> MOrErr = NewArchiveMember::getOldMember(Member->child, true);
@@ -243,7 +243,7 @@ LLVMRustWriteArchive(char *Dst,
243243
#endif
244244
}
245245
}
246-
#if LLVM_VERSION_MINOR >= 8
246+
#if LLVM_VERSION_GE(3, 8)
247247
auto pair = writeArchive(Dst, Members, WriteSymbtab, Kind, true, false);
248248
#else
249249
auto pair = writeArchive(Dst, Members, WriteSymbtab, Kind, true);

src/rustllvm/PassWrapper.cpp

+6-6
Original file line numberDiff line numberDiff line change
@@ -46,7 +46,7 @@ LLVMInitializePasses() {
4646
initializeVectorization(Registry);
4747
initializeIPO(Registry);
4848
initializeAnalysis(Registry);
49-
#if LLVM_VERSION_MINOR == 7
49+
#if LLVM_VERSION_EQ(3, 7)
5050
initializeIPA(Registry);
5151
#endif
5252
initializeTransformUtils(Registry);
@@ -297,7 +297,7 @@ LLVMRustCreateTargetMachine(const char *triple,
297297
bool FunctionSections,
298298
bool DataSections) {
299299

300-
#if LLVM_VERSION_MINOR <= 8
300+
#if LLVM_VERSION_LE(3, 8)
301301
Reloc::Model RM;
302302
#else
303303
Optional<Reloc::Model> RM;
@@ -316,7 +316,7 @@ LLVMRustCreateTargetMachine(const char *triple,
316316
RM = Reloc::DynamicNoPIC;
317317
break;
318318
default:
319-
#if LLVM_VERSION_MINOR <= 8
319+
#if LLVM_VERSION_LE(3, 8)
320320
RM = Reloc::Default;
321321
#endif
322322
break;
@@ -337,7 +337,7 @@ LLVMRustCreateTargetMachine(const char *triple,
337337
}
338338

339339
TargetOptions Options;
340-
#if LLVM_VERSION_MINOR <= 8
340+
#if LLVM_VERSION_LE(3, 8)
341341
Options.PositionIndependentExecutable = PositionIndependentExecutable;
342342
#endif
343343

@@ -539,7 +539,7 @@ extern "C" void
539539
LLVMRustRunRestrictionPass(LLVMModuleRef M, char **symbols, size_t len) {
540540
llvm::legacy::PassManager passes;
541541

542-
#if LLVM_VERSION_MINOR <= 8
542+
#if LLVM_VERSION_LE(3, 8)
543543
ArrayRef<const char*> ref(symbols, len);
544544
passes.add(llvm::createInternalizePass(ref));
545545
#else
@@ -593,7 +593,7 @@ LLVMRustGetModuleDataLayout(LLVMModuleRef M) {
593593

594594
extern "C" void
595595
LLVMRustSetModulePIELevel(LLVMModuleRef M) {
596-
#if LLVM_VERSION_MINOR >= 9
596+
#if LLVM_VERSION_GE(3, 9)
597597
unwrap(M)->setPIELevel(PIELevel::Level::Large);
598598
#endif
599599
}

src/rustllvm/RustWrapper.cpp

+15-15
Original file line numberDiff line numberDiff line change
@@ -394,7 +394,7 @@ extern "C" LLVMRustMetadataRef LLVMRustDIBuilderCreateSubroutineType(
394394
LLVMRustMetadataRef File,
395395
LLVMRustMetadataRef ParameterTypes) {
396396
return wrap(Builder->createSubroutineType(
397-
#if LLVM_VERSION_MINOR == 7
397+
#if LLVM_VERSION_EQ(3, 7)
398398
unwrapDI<DIFile>(File),
399399
#endif
400400
DITypeRefArray(unwrap<MDTuple>(ParameterTypes))));
@@ -416,7 +416,7 @@ extern "C" LLVMRustMetadataRef LLVMRustDIBuilderCreateFunction(
416416
LLVMValueRef Fn,
417417
LLVMRustMetadataRef TParam,
418418
LLVMRustMetadataRef Decl) {
419-
#if LLVM_VERSION_MINOR >= 8
419+
#if LLVM_VERSION_GE(3, 8)
420420
DITemplateParameterArray TParams =
421421
DITemplateParameterArray(unwrap<MDTuple>(TParam));
422422
DISubprogram *Sub = Builder->createFunction(
@@ -565,7 +565,7 @@ extern "C" LLVMRustMetadataRef LLVMRustDIBuilderCreateVariable(
565565
int64_t* AddrOps,
566566
unsigned AddrOpsCount,
567567
unsigned ArgNo) {
568-
#if LLVM_VERSION_MINOR >= 8
568+
#if LLVM_VERSION_GE(3, 8)
569569
if (Tag == 0x100) { // DW_TAG_auto_variable
570570
return wrap(Builder->createAutoVariable(
571571
unwrapDI<DIDescriptor>(Scope), Name,
@@ -814,7 +814,7 @@ LLVMRustLinkInExternalBitcode(LLVMModuleRef dst, char *bc, size_t len) {
814814

815815
raw_string_ostream Stream(Err);
816816
DiagnosticPrinterRawOStream DP(Stream);
817-
#if LLVM_VERSION_MINOR >= 8
817+
#if LLVM_VERSION_GE(3, 8)
818818
if (Linker::linkModules(*Dst, std::move(Src.get()))) {
819819
#else
820820
if (Linker::LinkModules(Dst, Src->get(), [&](const DiagnosticInfo &DI) { DI.print(DP); })) {
@@ -937,14 +937,14 @@ to_rust(DiagnosticKind kind)
937937
return LLVMRustDiagnosticKind::OptimizationRemarkMissed;
938938
case DK_OptimizationRemarkAnalysis:
939939
return LLVMRustDiagnosticKind::OptimizationRemarkAnalysis;
940-
#if LLVM_VERSION_MINOR >= 8
940+
#if LLVM_VERSION_GE(3, 8)
941941
case DK_OptimizationRemarkAnalysisFPCommute:
942942
return LLVMRustDiagnosticKind::OptimizationRemarkAnalysisFPCommute;
943943
case DK_OptimizationRemarkAnalysisAliasing:
944944
return LLVMRustDiagnosticKind::OptimizationRemarkAnalysisAliasing;
945945
#endif
946946
default:
947-
#if LLVM_VERSION_MINOR >= 9
947+
#if LLVM_VERSION_GE(3, 9)
948948
return (kind >= DK_FirstRemark && kind <= DK_LastRemark) ?
949949
LLVMRustDiagnosticKind::OptimizationRemarkOther :
950950
LLVMRustDiagnosticKind::Other;
@@ -994,7 +994,7 @@ extern "C" LLVMTypeKind LLVMRustGetTypeKind(LLVMTypeRef Ty) {
994994
return LLVMVectorTypeKind;
995995
case Type::X86_MMXTyID:
996996
return LLVMX86_MMXTypeKind;
997-
#if LLVM_VERSION_MINOR >= 8
997+
#if LLVM_VERSION_GE(3, 8)
998998
case Type::TokenTyID:
999999
return LLVMTokenTypeKind;
10001000
#endif
@@ -1043,7 +1043,7 @@ LLVMRustBuildCleanupPad(LLVMBuilderRef Builder,
10431043
unsigned ArgCnt,
10441044
LLVMValueRef *LLArgs,
10451045
const char *Name) {
1046-
#if LLVM_VERSION_MINOR >= 8
1046+
#if LLVM_VERSION_GE(3, 8)
10471047
Value **Args = unwrap(LLArgs);
10481048
if (ParentPad == NULL) {
10491049
Type *Ty = Type::getTokenTy(unwrap(Builder)->getContext());
@@ -1061,7 +1061,7 @@ extern "C" LLVMValueRef
10611061
LLVMRustBuildCleanupRet(LLVMBuilderRef Builder,
10621062
LLVMValueRef CleanupPad,
10631063
LLVMBasicBlockRef UnwindBB) {
1064-
#if LLVM_VERSION_MINOR >= 8
1064+
#if LLVM_VERSION_GE(3, 8)
10651065
CleanupPadInst *Inst = cast<CleanupPadInst>(unwrap(CleanupPad));
10661066
return wrap(unwrap(Builder)->CreateCleanupRet(Inst, unwrap(UnwindBB)));
10671067
#else
@@ -1075,7 +1075,7 @@ LLVMRustBuildCatchPad(LLVMBuilderRef Builder,
10751075
unsigned ArgCnt,
10761076
LLVMValueRef *LLArgs,
10771077
const char *Name) {
1078-
#if LLVM_VERSION_MINOR >= 8
1078+
#if LLVM_VERSION_GE(3, 8)
10791079
Value **Args = unwrap(LLArgs);
10801080
return wrap(unwrap(Builder)->CreateCatchPad(unwrap(ParentPad),
10811081
ArrayRef<Value*>(Args, ArgCnt),
@@ -1089,7 +1089,7 @@ extern "C" LLVMValueRef
10891089
LLVMRustBuildCatchRet(LLVMBuilderRef Builder,
10901090
LLVMValueRef Pad,
10911091
LLVMBasicBlockRef BB) {
1092-
#if LLVM_VERSION_MINOR >= 8
1092+
#if LLVM_VERSION_GE(3, 8)
10931093
return wrap(unwrap(Builder)->CreateCatchRet(cast<CatchPadInst>(unwrap(Pad)),
10941094
unwrap(BB)));
10951095
#else
@@ -1103,7 +1103,7 @@ LLVMRustBuildCatchSwitch(LLVMBuilderRef Builder,
11031103
LLVMBasicBlockRef BB,
11041104
unsigned NumHandlers,
11051105
const char *Name) {
1106-
#if LLVM_VERSION_MINOR >= 8
1106+
#if LLVM_VERSION_GE(3, 8)
11071107
if (ParentPad == NULL) {
11081108
Type *Ty = Type::getTokenTy(unwrap(Builder)->getContext());
11091109
ParentPad = wrap(Constant::getNullValue(Ty));
@@ -1120,7 +1120,7 @@ LLVMRustBuildCatchSwitch(LLVMBuilderRef Builder,
11201120
extern "C" void
11211121
LLVMRustAddHandler(LLVMValueRef CatchSwitchRef,
11221122
LLVMBasicBlockRef Handler) {
1123-
#if LLVM_VERSION_MINOR >= 8
1123+
#if LLVM_VERSION_GE(3, 8)
11241124
Value *CatchSwitch = unwrap(CatchSwitchRef);
11251125
cast<CatchSwitchInst>(CatchSwitch)->addHandler(unwrap(Handler));
11261126
#endif
@@ -1129,14 +1129,14 @@ LLVMRustAddHandler(LLVMValueRef CatchSwitchRef,
11291129
extern "C" void
11301130
LLVMRustSetPersonalityFn(LLVMBuilderRef B,
11311131
LLVMValueRef Personality) {
1132-
#if LLVM_VERSION_MINOR >= 8
1132+
#if LLVM_VERSION_GE(3, 8)
11331133
unwrap(B)->GetInsertBlock()
11341134
->getParent()
11351135
->setPersonalityFn(cast<Function>(unwrap(Personality)));
11361136
#endif
11371137
}
11381138

1139-
#if LLVM_VERSION_MINOR >= 8
1139+
#if LLVM_VERSION_GE(3, 8)
11401140
extern "C" OperandBundleDef*
11411141
LLVMRustBuildOperandBundleDef(const char *Name,
11421142
LLVMValueRef *Inputs,

src/rustllvm/rustllvm.h

+10-1
Original file line numberDiff line numberDiff line change
@@ -45,7 +45,16 @@
4545
#include "llvm-c/ExecutionEngine.h"
4646
#include "llvm-c/Object.h"
4747

48-
#if LLVM_VERSION_MINOR >= 7
48+
#define LLVM_VERSION_GE(major, minor) \
49+
(LLVM_VERSION_MAJOR > (major) || LLVM_VERSION_MAJOR == (major) && LLVM_VERSION_MINOR >= (minor))
50+
51+
#define LLVM_VERSION_EQ(major, minor) \
52+
(LLVM_VERSION_MAJOR == (major) && LLVM_VERSION_MINOR == (minor))
53+
54+
#define LLVM_VERSION_LE(major, minor) \
55+
(LLVM_VERSION_MAJOR < (major) || LLVM_VERSION_MAJOR == (major) && LLVM_VERSION_MINOR <= (minor))
56+
57+
#if LLVM_VERSION_GE(3, 7)
4958
#include "llvm/IR/LegacyPassManager.h"
5059
#else
5160
#include "llvm/PassManager.h"

0 commit comments

Comments
 (0)