Skip to content

Commit 68241f0

Browse files
authored
Auto merge of #34178 - shepmaster:llvm-3.7-and-up, r=alexcrichton
Reflect supporting only LLVM 3.7+ in the LLVM wrappers Based on 12abddb, it appears we can drop support for these older LLVM versions. Hopefully, this will make it slightly easier to support the changes needed for LLVM 3.9. r? @nagisa /cc @brson
2 parents a9234c1 + f3d9de4 commit 68241f0

File tree

4 files changed

+5
-224
lines changed

4 files changed

+5
-224
lines changed

src/rustllvm/ArchiveWrapper.cpp

+1-27
Original file line numberDiff line numberDiff line change
@@ -11,10 +11,7 @@
1111
#include "rustllvm.h"
1212

1313
#include "llvm/Object/Archive.h"
14-
15-
#if LLVM_VERSION_MINOR >= 7
1614
#include "llvm/Object/ArchiveWriter.h"
17-
#endif
1815

1916
using namespace llvm;
2017
using namespace llvm::object;
@@ -34,13 +31,7 @@ struct LLVMRustArchiveMember {
3431
~LLVMRustArchiveMember() {}
3532
};
3633

37-
#if LLVM_VERSION_MINOR >= 6
3834
typedef OwningBinary<Archive> RustArchive;
39-
#define GET_ARCHIVE(a) ((a)->getBinary())
40-
#else
41-
typedef Archive RustArchive;
42-
#define GET_ARCHIVE(a) (a)
43-
#endif
4435

4536
extern "C" void*
4637
LLVMRustOpenArchive(char *path) {
@@ -52,7 +43,6 @@ LLVMRustOpenArchive(char *path) {
5243
return nullptr;
5344
}
5445

55-
#if LLVM_VERSION_MINOR >= 6
5646
ErrorOr<std::unique_ptr<Archive>> archive_or =
5747
Archive::create(buf_or.get()->getMemBufferRef());
5848

@@ -63,14 +53,6 @@ LLVMRustOpenArchive(char *path) {
6353

6454
OwningBinary<Archive> *ret = new OwningBinary<Archive>(
6555
std::move(archive_or.get()), std::move(buf_or.get()));
66-
#else
67-
std::error_code err;
68-
Archive *ret = new Archive(std::move(buf_or.get()), err);
69-
if (err) {
70-
LLVMRustSetLastError(err.message().c_str());
71-
return nullptr;
72-
}
73-
#endif
7456

7557
return ret;
7658
}
@@ -87,7 +69,7 @@ struct RustArchiveIterator {
8769

8870
extern "C" RustArchiveIterator*
8971
LLVMRustArchiveIteratorNew(RustArchive *ra) {
90-
Archive *ar = GET_ARCHIVE(ra);
72+
Archive *ar = ra->getBinary();
9173
RustArchiveIterator *rai = new RustArchiveIterator();
9274
rai->cur = ar->child_begin();
9375
rai->end = ar->child_end();
@@ -137,16 +119,12 @@ LLVMRustArchiveChildName(const Archive::Child *child, size_t *size) {
137119
extern "C" const char*
138120
LLVMRustArchiveChildData(Archive::Child *child, size_t *size) {
139121
StringRef buf;
140-
#if LLVM_VERSION_MINOR >= 7
141122
ErrorOr<StringRef> buf_or_err = child->getBuffer();
142123
if (buf_or_err.getError()) {
143124
LLVMRustSetLastError(buf_or_err.getError().message().c_str());
144125
return NULL;
145126
}
146127
buf = buf_or_err.get();
147-
#else
148-
buf = child->getBuffer();
149-
#endif
150128
*size = buf.size();
151129
return buf.data();
152130
}
@@ -172,7 +150,6 @@ LLVMRustWriteArchive(char *Dst,
172150
const LLVMRustArchiveMember **NewMembers,
173151
bool WriteSymbtab,
174152
Archive::Kind Kind) {
175-
#if LLVM_VERSION_MINOR >= 7
176153
std::vector<NewArchiveIterator> Members;
177154

178155
for (size_t i = 0; i < NumMembers; i++) {
@@ -196,8 +173,5 @@ LLVMRustWriteArchive(char *Dst,
196173
if (!pair.second)
197174
return 0;
198175
LLVMRustSetLastError(pair.second.message().c_str());
199-
#else
200-
LLVMRustSetLastError("writing archives not supported with this LLVM version");
201-
#endif
202176
return -1;
203177
}

src/rustllvm/ExecutionEngineWrapper.cpp

-5
Original file line numberDiff line numberDiff line change
@@ -90,13 +90,8 @@ extern "C" LLVMExecutionEngineRef LLVMBuildExecutionEngine(LLVMModuleRef mod)
9090
RustJITMemoryManager *mm = new RustJITMemoryManager;
9191

9292
ExecutionEngine *ee =
93-
#if LLVM_VERSION_MINOR >= 6
9493
EngineBuilder(std::unique_ptr<Module>(unwrap(mod)))
9594
.setMCJITMemoryManager(std::unique_ptr<RustJITMemoryManager>(mm))
96-
#else
97-
EngineBuilder(unwrap(mod))
98-
.setMCJITMemoryManager(mm)
99-
#endif
10095
.setEngineKind(EngineKind::JIT)
10196
.setErrorStr(&error_str)
10297
.setTargetOptions(options)

src/rustllvm/PassWrapper.cpp

+1-52
Original file line numberDiff line numberDiff line change
@@ -15,12 +15,8 @@
1515
#include "llvm/Support/CBindingWrapping.h"
1616
#include "llvm/Support/FileSystem.h"
1717
#include "llvm/Support/Host.h"
18-
#if LLVM_VERSION_MINOR >= 7
1918
#include "llvm/Analysis/TargetLibraryInfo.h"
2019
#include "llvm/Analysis/TargetTransformInfo.h"
21-
#else
22-
#include "llvm/Target/TargetLibraryInfo.h"
23-
#endif
2420
#include "llvm/Target/TargetMachine.h"
2521
#include "llvm/Target/TargetSubtargetInfo.h"
2622
#include "llvm/Transforms/IPO/PassManagerBuilder.h"
@@ -49,7 +45,7 @@ LLVMInitializePasses() {
4945
initializeVectorization(Registry);
5046
initializeIPO(Registry);
5147
initializeAnalysis(Registry);
52-
#if LLVM_VERSION_MINOR <= 7
48+
#if LLVM_VERSION_MINOR == 7
5349
initializeIPA(Registry);
5450
#endif
5551
initializeTransformUtils(Registry);
@@ -223,17 +219,8 @@ LLVMRustAddAnalysisPasses(LLVMTargetMachineRef TM,
223219
LLVMPassManagerRef PMR,
224220
LLVMModuleRef M) {
225221
PassManagerBase *PM = unwrap(PMR);
226-
#if LLVM_VERSION_MINOR >= 7
227222
PM->add(createTargetTransformInfoWrapperPass(
228223
unwrap(TM)->getTargetIRAnalysis()));
229-
#else
230-
#if LLVM_VERSION_MINOR == 6
231-
PM->add(new DataLayoutPass());
232-
#else
233-
PM->add(new DataLayoutPass(unwrap(M)));
234-
#endif
235-
unwrap(TM)->addAnalysisPasses(*PM);
236-
#endif
237224
}
238225

239226
extern "C" void
@@ -242,10 +229,8 @@ LLVMRustConfigurePassManagerBuilder(LLVMPassManagerBuilderRef PMB,
242229
bool MergeFunctions,
243230
bool SLPVectorize,
244231
bool LoopVectorize) {
245-
#if LLVM_VERSION_MINOR >= 6
246232
// Ignore mergefunc for now as enabling it causes crashes.
247233
//unwrap(PMB)->MergeFunctions = MergeFunctions;
248-
#endif
249234
unwrap(PMB)->SLPVectorize = SLPVectorize;
250235
unwrap(PMB)->OptLevel = OptLevel;
251236
unwrap(PMB)->LoopVectorize = LoopVectorize;
@@ -258,11 +243,7 @@ LLVMRustAddBuilderLibraryInfo(LLVMPassManagerBuilderRef PMB,
258243
LLVMModuleRef M,
259244
bool DisableSimplifyLibCalls) {
260245
Triple TargetTriple(unwrap(M)->getTargetTriple());
261-
#if LLVM_VERSION_MINOR >= 7
262246
TargetLibraryInfoImpl *TLI = new TargetLibraryInfoImpl(TargetTriple);
263-
#else
264-
TargetLibraryInfo *TLI = new TargetLibraryInfo(TargetTriple);
265-
#endif
266247
if (DisableSimplifyLibCalls)
267248
TLI->disableAllFunctions();
268249
unwrap(PMB)->LibraryInfo = TLI;
@@ -275,17 +256,10 @@ LLVMRustAddLibraryInfo(LLVMPassManagerRef PMB,
275256
LLVMModuleRef M,
276257
bool DisableSimplifyLibCalls) {
277258
Triple TargetTriple(unwrap(M)->getTargetTriple());
278-
#if LLVM_VERSION_MINOR >= 7
279259
TargetLibraryInfoImpl TLII(TargetTriple);
280260
if (DisableSimplifyLibCalls)
281261
TLII.disableAllFunctions();
282262
unwrap(PMB)->add(new TargetLibraryInfoWrapperPass(TLII));
283-
#else
284-
TargetLibraryInfo *TLI = new TargetLibraryInfo(TargetTriple);
285-
if (DisableSimplifyLibCalls)
286-
TLI->disableAllFunctions();
287-
unwrap(PMB)->add(TLI);
288-
#endif
289263
}
290264

291265
// Unfortunately, the LLVM C API doesn't provide an easy way of iterating over
@@ -323,25 +297,16 @@ LLVMRustWriteOutputFile(LLVMTargetMachineRef Target,
323297
PassManager *PM = unwrap<PassManager>(PMR);
324298

325299
std::string ErrorInfo;
326-
#if LLVM_VERSION_MINOR >= 6
327300
std::error_code EC;
328301
raw_fd_ostream OS(path, EC, sys::fs::F_None);
329302
if (EC)
330303
ErrorInfo = EC.message();
331-
#else
332-
raw_fd_ostream OS(path, ErrorInfo, sys::fs::F_None);
333-
#endif
334304
if (ErrorInfo != "") {
335305
LLVMRustSetLastError(ErrorInfo.c_str());
336306
return false;
337307
}
338308

339-
#if LLVM_VERSION_MINOR >= 7
340309
unwrap(Target)->addPassesToEmitFile(*PM, OS, FileType, false);
341-
#else
342-
formatted_raw_ostream FOS(OS);
343-
unwrap(Target)->addPassesToEmitFile(*PM, FOS, FileType, false);
344-
#endif
345310
PM->run(*unwrap(M));
346311

347312
// Apparently `addPassesToEmitFile` adds a pointer to our on-the-stack output
@@ -358,14 +323,10 @@ LLVMRustPrintModule(LLVMPassManagerRef PMR,
358323
PassManager *PM = unwrap<PassManager>(PMR);
359324
std::string ErrorInfo;
360325

361-
#if LLVM_VERSION_MINOR >= 6
362326
std::error_code EC;
363327
raw_fd_ostream OS(path, EC, sys::fs::F_None);
364328
if (EC)
365329
ErrorInfo = EC.message();
366-
#else
367-
raw_fd_ostream OS(path, ErrorInfo, sys::fs::F_None);
368-
#endif
369330

370331
formatted_raw_ostream FOS(OS);
371332

@@ -428,22 +389,10 @@ extern "C" void
428389
LLVMRustSetDataLayoutFromTargetMachine(LLVMModuleRef Module,
429390
LLVMTargetMachineRef TMR) {
430391
TargetMachine *Target = unwrap(TMR);
431-
#if LLVM_VERSION_MINOR >= 7
432392
unwrap(Module)->setDataLayout(Target->createDataLayout());
433-
#elif LLVM_VERSION_MINOR >= 6
434-
if (const DataLayout *DL = Target->getSubtargetImpl()->getDataLayout())
435-
unwrap(Module)->setDataLayout(DL);
436-
#else
437-
if (const DataLayout *DL = Target->getDataLayout())
438-
unwrap(Module)->setDataLayout(DL);
439-
#endif
440393
}
441394

442395
extern "C" LLVMTargetDataRef
443396
LLVMRustGetModuleDataLayout(LLVMModuleRef M) {
444-
#if LLVM_VERSION_MINOR >= 7
445397
return wrap(&unwrap(M)->getDataLayout());
446-
#else
447-
return wrap(unwrap(M)->getDataLayout());
448-
#endif
449398
}

0 commit comments

Comments
 (0)