diff options
| author | Jake Goulding <jake.goulding@gmail.com> | 2016-06-09 09:41:17 -0400 |
|---|---|---|
| committer | Jake Goulding <jake.goulding@gmail.com> | 2016-06-09 15:59:26 -0400 |
| commit | 4f01329e0eb48c9481e91ff1749367a4c0048d70 (patch) | |
| tree | 283488aefcf85b163c213db295244c133a84fff5 | |
| parent | 0740a93cc290a5419807d2e8c6c442354baf46b0 (diff) | |
| download | rust-4f01329e0eb48c9481e91ff1749367a4c0048d70.tar.gz rust-4f01329e0eb48c9481e91ff1749367a4c0048d70.zip | |
Reflect supporting only LLVM 3.7+ in the LLVM wrappers
| -rw-r--r-- | src/rustllvm/ArchiveWrapper.cpp | 25 | ||||
| -rw-r--r-- | src/rustllvm/ExecutionEngineWrapper.cpp | 5 | ||||
| -rw-r--r-- | src/rustllvm/PassWrapper.cpp | 53 | ||||
| -rw-r--r-- | src/rustllvm/RustWrapper.cpp | 143 |
4 files changed, 4 insertions, 222 deletions
diff --git a/src/rustllvm/ArchiveWrapper.cpp b/src/rustllvm/ArchiveWrapper.cpp index d3f2907bfc3..1de0f59109e 100644 --- a/src/rustllvm/ArchiveWrapper.cpp +++ b/src/rustllvm/ArchiveWrapper.cpp @@ -11,10 +11,7 @@ #include "rustllvm.h" #include "llvm/Object/Archive.h" - -#if LLVM_VERSION_MINOR >= 7 #include "llvm/Object/ArchiveWriter.h" -#endif using namespace llvm; using namespace llvm::object; @@ -34,13 +31,8 @@ struct LLVMRustArchiveMember { ~LLVMRustArchiveMember() {} }; -#if LLVM_VERSION_MINOR >= 6 typedef OwningBinary<Archive> RustArchive; #define GET_ARCHIVE(a) ((a)->getBinary()) -#else -typedef Archive RustArchive; -#define GET_ARCHIVE(a) (a) -#endif extern "C" void* LLVMRustOpenArchive(char *path) { @@ -52,7 +44,6 @@ LLVMRustOpenArchive(char *path) { return nullptr; } -#if LLVM_VERSION_MINOR >= 6 ErrorOr<std::unique_ptr<Archive>> archive_or = Archive::create(buf_or.get()->getMemBufferRef()); @@ -63,14 +54,6 @@ LLVMRustOpenArchive(char *path) { OwningBinary<Archive> *ret = new OwningBinary<Archive>( std::move(archive_or.get()), std::move(buf_or.get())); -#else - std::error_code err; - Archive *ret = new Archive(std::move(buf_or.get()), err); - if (err) { - LLVMRustSetLastError(err.message().c_str()); - return nullptr; - } -#endif return ret; } @@ -137,16 +120,12 @@ LLVMRustArchiveChildName(const Archive::Child *child, size_t *size) { extern "C" const char* LLVMRustArchiveChildData(Archive::Child *child, size_t *size) { StringRef buf; -#if LLVM_VERSION_MINOR >= 7 ErrorOr<StringRef> buf_or_err = child->getBuffer(); if (buf_or_err.getError()) { LLVMRustSetLastError(buf_or_err.getError().message().c_str()); return NULL; } buf = buf_or_err.get(); -#else - buf = child->getBuffer(); -#endif *size = buf.size(); return buf.data(); } @@ -172,7 +151,6 @@ LLVMRustWriteArchive(char *Dst, const LLVMRustArchiveMember **NewMembers, bool WriteSymbtab, Archive::Kind Kind) { -#if LLVM_VERSION_MINOR >= 7 std::vector<NewArchiveIterator> Members; for (size_t i = 0; i < NumMembers; i++) { @@ -196,8 +174,5 @@ LLVMRustWriteArchive(char *Dst, if (!pair.second) return 0; LLVMRustSetLastError(pair.second.message().c_str()); -#else - LLVMRustSetLastError("writing archives not supported with this LLVM version"); -#endif return -1; } diff --git a/src/rustllvm/ExecutionEngineWrapper.cpp b/src/rustllvm/ExecutionEngineWrapper.cpp index 8b01cac820e..b26ab446019 100644 --- a/src/rustllvm/ExecutionEngineWrapper.cpp +++ b/src/rustllvm/ExecutionEngineWrapper.cpp @@ -90,13 +90,8 @@ extern "C" LLVMExecutionEngineRef LLVMBuildExecutionEngine(LLVMModuleRef mod) RustJITMemoryManager *mm = new RustJITMemoryManager; ExecutionEngine *ee = - #if LLVM_VERSION_MINOR >= 6 EngineBuilder(std::unique_ptr<Module>(unwrap(mod))) .setMCJITMemoryManager(std::unique_ptr<RustJITMemoryManager>(mm)) - #else - EngineBuilder(unwrap(mod)) - .setMCJITMemoryManager(mm) - #endif .setEngineKind(EngineKind::JIT) .setErrorStr(&error_str) .setTargetOptions(options) diff --git a/src/rustllvm/PassWrapper.cpp b/src/rustllvm/PassWrapper.cpp index b3d4e35d7b0..3564f338a02 100644 --- a/src/rustllvm/PassWrapper.cpp +++ b/src/rustllvm/PassWrapper.cpp @@ -15,12 +15,8 @@ #include "llvm/Support/CBindingWrapping.h" #include "llvm/Support/FileSystem.h" #include "llvm/Support/Host.h" -#if LLVM_VERSION_MINOR >= 7 #include "llvm/Analysis/TargetLibraryInfo.h" #include "llvm/Analysis/TargetTransformInfo.h" -#else -#include "llvm/Target/TargetLibraryInfo.h" -#endif #include "llvm/Target/TargetMachine.h" #include "llvm/Target/TargetSubtargetInfo.h" #include "llvm/Transforms/IPO/PassManagerBuilder.h" @@ -49,7 +45,7 @@ LLVMInitializePasses() { initializeVectorization(Registry); initializeIPO(Registry); initializeAnalysis(Registry); -#if LLVM_VERSION_MINOR <= 7 +#if LLVM_VERSION_MINOR == 7 initializeIPA(Registry); #endif initializeTransformUtils(Registry); @@ -223,17 +219,8 @@ LLVMRustAddAnalysisPasses(LLVMTargetMachineRef TM, LLVMPassManagerRef PMR, LLVMModuleRef M) { PassManagerBase *PM = unwrap(PMR); -#if LLVM_VERSION_MINOR >= 7 PM->add(createTargetTransformInfoWrapperPass( unwrap(TM)->getTargetIRAnalysis())); -#else -#if LLVM_VERSION_MINOR == 6 - PM->add(new DataLayoutPass()); -#else - PM->add(new DataLayoutPass(unwrap(M))); -#endif - unwrap(TM)->addAnalysisPasses(*PM); -#endif } extern "C" void @@ -242,10 +229,8 @@ LLVMRustConfigurePassManagerBuilder(LLVMPassManagerBuilderRef PMB, bool MergeFunctions, bool SLPVectorize, bool LoopVectorize) { -#if LLVM_VERSION_MINOR >= 6 // Ignore mergefunc for now as enabling it causes crashes. //unwrap(PMB)->MergeFunctions = MergeFunctions; -#endif unwrap(PMB)->SLPVectorize = SLPVectorize; unwrap(PMB)->OptLevel = OptLevel; unwrap(PMB)->LoopVectorize = LoopVectorize; @@ -258,11 +243,7 @@ LLVMRustAddBuilderLibraryInfo(LLVMPassManagerBuilderRef PMB, LLVMModuleRef M, bool DisableSimplifyLibCalls) { Triple TargetTriple(unwrap(M)->getTargetTriple()); -#if LLVM_VERSION_MINOR >= 7 TargetLibraryInfoImpl *TLI = new TargetLibraryInfoImpl(TargetTriple); -#else - TargetLibraryInfo *TLI = new TargetLibraryInfo(TargetTriple); -#endif if (DisableSimplifyLibCalls) TLI->disableAllFunctions(); unwrap(PMB)->LibraryInfo = TLI; @@ -275,17 +256,10 @@ LLVMRustAddLibraryInfo(LLVMPassManagerRef PMB, LLVMModuleRef M, bool DisableSimplifyLibCalls) { Triple TargetTriple(unwrap(M)->getTargetTriple()); -#if LLVM_VERSION_MINOR >= 7 TargetLibraryInfoImpl TLII(TargetTriple); if (DisableSimplifyLibCalls) TLII.disableAllFunctions(); unwrap(PMB)->add(new TargetLibraryInfoWrapperPass(TLII)); -#else - TargetLibraryInfo *TLI = new TargetLibraryInfo(TargetTriple); - if (DisableSimplifyLibCalls) - TLI->disableAllFunctions(); - unwrap(PMB)->add(TLI); -#endif } // Unfortunately, the LLVM C API doesn't provide an easy way of iterating over @@ -323,25 +297,16 @@ LLVMRustWriteOutputFile(LLVMTargetMachineRef Target, PassManager *PM = unwrap<PassManager>(PMR); std::string ErrorInfo; -#if LLVM_VERSION_MINOR >= 6 std::error_code EC; raw_fd_ostream OS(path, EC, sys::fs::F_None); if (EC) ErrorInfo = EC.message(); -#else - raw_fd_ostream OS(path, ErrorInfo, sys::fs::F_None); -#endif if (ErrorInfo != "") { LLVMRustSetLastError(ErrorInfo.c_str()); return false; } -#if LLVM_VERSION_MINOR >= 7 unwrap(Target)->addPassesToEmitFile(*PM, OS, FileType, false); -#else - formatted_raw_ostream FOS(OS); - unwrap(Target)->addPassesToEmitFile(*PM, FOS, FileType, false); -#endif PM->run(*unwrap(M)); // Apparently `addPassesToEmitFile` adds a pointer to our on-the-stack output @@ -358,14 +323,10 @@ LLVMRustPrintModule(LLVMPassManagerRef PMR, PassManager *PM = unwrap<PassManager>(PMR); std::string ErrorInfo; -#if LLVM_VERSION_MINOR >= 6 std::error_code EC; raw_fd_ostream OS(path, EC, sys::fs::F_None); if (EC) ErrorInfo = EC.message(); -#else - raw_fd_ostream OS(path, ErrorInfo, sys::fs::F_None); -#endif formatted_raw_ostream FOS(OS); @@ -428,22 +389,10 @@ extern "C" void LLVMRustSetDataLayoutFromTargetMachine(LLVMModuleRef Module, LLVMTargetMachineRef TMR) { TargetMachine *Target = unwrap(TMR); -#if LLVM_VERSION_MINOR >= 7 unwrap(Module)->setDataLayout(Target->createDataLayout()); -#elif LLVM_VERSION_MINOR >= 6 - if (const DataLayout *DL = Target->getSubtargetImpl()->getDataLayout()) - unwrap(Module)->setDataLayout(DL); -#else - if (const DataLayout *DL = Target->getDataLayout()) - unwrap(Module)->setDataLayout(DL); -#endif } extern "C" LLVMTargetDataRef LLVMRustGetModuleDataLayout(LLVMModuleRef M) { -#if LLVM_VERSION_MINOR >= 7 return wrap(&unwrap(M)->getDataLayout()); -#else - return wrap(unwrap(M)->getDataLayout()); -#endif } diff --git a/src/rustllvm/RustWrapper.cpp b/src/rustllvm/RustWrapper.cpp index 697b2d3f539..fadd95c9a72 100644 --- a/src/rustllvm/RustWrapper.cpp +++ b/src/rustllvm/RustWrapper.cpp @@ -243,7 +243,6 @@ extern "C" LLVMValueRef LLVMInlineAsm(LLVMTypeRef Ty, typedef DIBuilder* DIBuilderRef; -#if LLVM_VERSION_MINOR >= 6 typedef struct LLVMOpaqueMetadata *LLVMMetadataRef; namespace llvm { @@ -253,29 +252,15 @@ inline Metadata **unwrap(LLVMMetadataRef *Vals) { return reinterpret_cast<Metadata**>(Vals); } } -#else -typedef LLVMValueRef LLVMMetadataRef; -#endif template<typename DIT> DIT* unwrapDIptr(LLVMMetadataRef ref) { return (DIT*) (ref ? unwrap<MDNode>(ref) : NULL); } -#if LLVM_VERSION_MINOR <= 6 -template<typename DIT> -DIT unwrapDI(LLVMMetadataRef ref) { - return DIT(ref ? unwrap<MDNode>(ref) : NULL); -} -#else #define DIDescriptor DIScope #define DIArray DINodeArray #define unwrapDI unwrapDIptr -#endif - -#if LLVM_VERSION_MINOR <= 5 -#define DISubroutineType DICompositeType -#endif extern "C" uint32_t LLVMRustDebugMetadataVersion() { return DEBUG_METADATA_VERSION; @@ -339,16 +324,10 @@ extern "C" LLVMMetadataRef LLVMDIBuilderCreateSubroutineType( LLVMMetadataRef File, LLVMMetadataRef ParameterTypes) { return wrap(Builder->createSubroutineType( -#if LLVM_VERSION_MINOR <= 7 +#if LLVM_VERSION_MINOR == 7 unwrapDI<DIFile>(File), #endif -#if LLVM_VERSION_MINOR >= 7 DITypeRefArray(unwrap<MDTuple>(ParameterTypes)))); -#elif LLVM_VERSION_MINOR >= 6 - unwrapDI<DITypeArray>(ParameterTypes))); -#else - unwrapDI<DIArray>(ParameterTypes))); -#endif } extern "C" LLVMMetadataRef LLVMDIBuilderCreateFunction( @@ -435,11 +414,7 @@ extern "C" LLVMMetadataRef LLVMDIBuilderCreateStructType( AlignInBits, Flags, unwrapDI<DIType>(DerivedFrom), -#if LLVM_VERSION_MINOR >= 7 DINodeArray(unwrapDI<MDTuple>(Elements)), -#else - unwrapDI<DIArray>(Elements), -#endif RunTimeLang, unwrapDI<DIType>(VTableHolder), UniqueId @@ -473,9 +448,6 @@ extern "C" LLVMMetadataRef LLVMDIBuilderCreateLexicalBlock( return wrap(Builder->createLexicalBlock( unwrapDI<DIDescriptor>(Scope), unwrapDI<DIFile>(File), Line, Col -#if LLVM_VERSION_MINOR == 5 - , 0 -#endif )); } @@ -490,11 +462,7 @@ extern "C" LLVMMetadataRef LLVMDIBuilderCreateStaticVariable( bool isLocalToUnit, LLVMValueRef Val, LLVMMetadataRef Decl = NULL) { -#if LLVM_VERSION_MINOR >= 6 return wrap(Builder->createGlobalVariable(unwrapDI<DIDescriptor>(Context), -#else - return wrap(Builder->createStaticVariable(unwrapDI<DIDescriptor>(Context), -#endif Name, LinkageName, unwrapDI<DIFile>(File), @@ -518,25 +486,6 @@ extern "C" LLVMMetadataRef LLVMDIBuilderCreateVariable( int64_t* AddrOps, unsigned AddrOpsCount, unsigned ArgNo) { -#if LLVM_VERSION_MINOR == 5 - if (AddrOpsCount > 0) { - SmallVector<llvm::Value *, 16> addr_ops; - llvm::Type *Int64Ty = Type::getInt64Ty(unwrap<MDNode>(Scope)->getContext()); - for (unsigned i = 0; i < AddrOpsCount; ++i) - addr_ops.push_back(ConstantInt::get(Int64Ty, AddrOps[i])); - - return wrap(Builder->createComplexVariable( - Tag, - unwrapDI<DIDescriptor>(Scope), - Name, - unwrapDI<DIFile>(File), - LineNo, - unwrapDI<DIType>(Ty), - addr_ops, - ArgNo - )); - } -#endif #if LLVM_VERSION_MINOR >= 8 if (Tag == 0x100) { // DW_TAG_auto_variable return wrap(Builder->createAutoVariable( @@ -568,11 +517,7 @@ extern "C" LLVMMetadataRef LLVMDIBuilderCreateArrayType( LLVMMetadataRef Subscripts) { return wrap(Builder->createArrayType(Size, AlignInBits, unwrapDI<DIType>(Ty), -#if LLVM_VERSION_MINOR >= 7 DINodeArray(unwrapDI<MDTuple>(Subscripts)) -#else - unwrapDI<DIArray>(Subscripts) -#endif )); } @@ -584,11 +529,7 @@ extern "C" LLVMMetadataRef LLVMDIBuilderCreateVectorType( LLVMMetadataRef Subscripts) { return wrap(Builder->createVectorType(Size, AlignInBits, unwrapDI<DIType>(Ty), -#if LLVM_VERSION_MINOR >= 7 DINodeArray(unwrapDI<MDTuple>(Subscripts)) -#else - unwrapDI<DIArray>(Subscripts) -#endif )); } @@ -603,18 +544,9 @@ extern "C" LLVMMetadataRef LLVMDIBuilderGetOrCreateArray( DIBuilderRef Builder, LLVMMetadataRef* Ptr, unsigned Count) { -#if LLVM_VERSION_MINOR >= 7 Metadata **DataValue = unwrap(Ptr); return wrap(Builder->getOrCreateArray( ArrayRef<Metadata*>(DataValue, Count)).get()); -#else - return wrap(Builder->getOrCreateArray( -#if LLVM_VERSION_MINOR >= 6 - ArrayRef<Metadata*>(unwrap(Ptr), Count))); -#else - ArrayRef<Value*>(reinterpret_cast<Value**>(Ptr), Count))); -#endif -#endif } extern "C" LLVMValueRef LLVMDIBuilderInsertDeclareAtEnd( @@ -627,18 +559,10 @@ extern "C" LLVMValueRef LLVMDIBuilderInsertDeclareAtEnd( LLVMBasicBlockRef InsertAtEnd) { return wrap(Builder->insertDeclare( unwrap(Val), -#if LLVM_VERSION_MINOR >= 7 unwrap<DILocalVariable>(VarInfo), -#else - unwrapDI<DIVariable>(VarInfo), -#endif -#if LLVM_VERSION_MINOR >= 6 Builder->createExpression( llvm::ArrayRef<int64_t>(AddrOps, AddrOpsCount)), -#endif -#if LLVM_VERSION_MINOR >= 7 DebugLoc(cast<MDNode>(unwrap<MetadataAsValue>(DL)->getMetadata())), -#endif unwrap(InsertAtEnd))); } @@ -650,22 +574,12 @@ extern "C" LLVMValueRef LLVMDIBuilderInsertDeclareBefore( unsigned AddrOpsCount, LLVMValueRef DL, LLVMValueRef InsertBefore) { -#if LLVM_VERSION_MINOR >= 6 -#endif return wrap(Builder->insertDeclare( unwrap(Val), -#if LLVM_VERSION_MINOR >= 7 unwrap<DILocalVariable>(VarInfo), -#else - unwrapDI<DIVariable>(VarInfo), -#endif -#if LLVM_VERSION_MINOR >= 6 Builder->createExpression( llvm::ArrayRef<int64_t>(AddrOps, AddrOpsCount)), -#endif -#if LLVM_VERSION_MINOR >= 7 DebugLoc(cast<MDNode>(unwrap<MetadataAsValue>(DL)->getMetadata())), -#endif unwrap<Instruction>(InsertBefore))); } @@ -695,11 +609,7 @@ extern "C" LLVMMetadataRef LLVMDIBuilderCreateEnumerationType( LineNumber, SizeInBits, AlignInBits, -#if LLVM_VERSION_MINOR >= 7 DINodeArray(unwrapDI<MDTuple>(Elements)), -#else - unwrapDI<DIArray>(Elements), -#endif unwrapDI<DIType>(ClassType))); } @@ -724,11 +634,7 @@ extern "C" LLVMMetadataRef LLVMDIBuilderCreateUnionType( SizeInBits, AlignInBits, Flags, -#if LLVM_VERSION_MINOR >= 7 DINodeArray(unwrapDI<MDTuple>(Elements)), -#else - unwrapDI<DIArray>(Elements), -#endif RunTimeLang, UniqueId )); @@ -747,12 +653,6 @@ extern "C" LLVMMetadataRef LLVMDIBuilderCreateTemplateTypeParameter( unwrapDI<DIDescriptor>(Scope), Name, unwrapDI<DIType>(Ty) -#if LLVM_VERSION_MINOR <= 6 - , - unwrapDI<MDNode*>(File), - LineNo, - ColumnNo -#endif )); } @@ -785,15 +685,8 @@ extern "C" void LLVMDICompositeTypeSetTypeArray( LLVMMetadataRef CompositeType, LLVMMetadataRef TypeArray) { -#if LLVM_VERSION_MINOR >= 7 DICompositeType *tmp = unwrapDI<DICompositeType>(CompositeType); Builder->replaceArrays(tmp, DINodeArray(unwrap<MDTuple>(TypeArray))); -#elif LLVM_VERSION_MINOR >= 6 - DICompositeType tmp = unwrapDI<DICompositeType>(CompositeType); - Builder->replaceArrays(tmp, unwrapDI<DIArray>(TypeArray)); -#else - unwrapDI<DICompositeType>(CompositeType).setTypeArray(unwrapDI<DIArray>(TypeArray)); -#endif } extern "C" LLVMValueRef LLVMDIBuilderCreateDebugLocation( @@ -810,15 +703,7 @@ extern "C" LLVMValueRef LLVMDIBuilderCreateDebugLocation( unwrapDIptr<MDNode>(Scope), unwrapDIptr<MDNode>(InlinedAt)); -#if LLVM_VERSION_MINOR >= 6 - return wrap(MetadataAsValue::get(context, debug_loc.getAsMDNode( -#if LLVM_VERSION_MINOR <= 6 - context -#endif - ))); -#else - return wrap(debug_loc.getAsMDNode(context)); -#endif + return wrap(MetadataAsValue::get(context, debug_loc.getAsMDNode())); } extern "C" void LLVMWriteTypeToString(LLVMTypeRef Type, RustStringRef str) { @@ -838,40 +723,22 @@ extern "C" void LLVMWriteValueToString(LLVMValueRef Value, RustStringRef str) { extern "C" bool LLVMRustLinkInExternalBitcode(LLVMModuleRef dst, char *bc, size_t len) { Module *Dst = unwrap(dst); -#if LLVM_VERSION_MINOR >= 6 std::unique_ptr<MemoryBuffer> buf = MemoryBuffer::getMemBufferCopy(StringRef(bc, len)); -#if LLVM_VERSION_MINOR >= 7 ErrorOr<std::unique_ptr<Module>> Src = llvm::getLazyBitcodeModule(std::move(buf), Dst->getContext()); -#else - ErrorOr<Module *> Src = llvm::getLazyBitcodeModule(std::move(buf), Dst->getContext()); -#endif -#else - MemoryBuffer* buf = MemoryBuffer::getMemBufferCopy(StringRef(bc, len)); - ErrorOr<Module *> Src = llvm::getLazyBitcodeModule(buf, Dst->getContext()); -#endif if (!Src) { LLVMRustSetLastError(Src.getError().message().c_str()); -#if LLVM_VERSION_MINOR == 5 - delete buf; -#endif return false; } std::string Err; -#if LLVM_VERSION_MINOR >= 6 raw_string_ostream Stream(Err); DiagnosticPrinterRawOStream DP(Stream); #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); })) { -#endif #else - if (Linker::LinkModules(Dst, *Src, Linker::DestroySource, &Err)) { + if (Linker::LinkModules(Dst, Src->get(), [&](const DiagnosticInfo &DI) { DI.print(DP); })) { #endif LLVMRustSetLastError(Err.c_str()); return false; @@ -975,11 +842,7 @@ extern "C" void LLVMWriteDebugLocToString( RustStringRef str) { raw_rust_string_ostream os(str); -#if LLVM_VERSION_MINOR >= 7 unwrap(dl)->print(os); -#else - unwrap(dl)->print(*unwrap(C), os); -#endif } DEFINE_SIMPLE_CONVERSION_FUNCTIONS(SMDiagnostic, LLVMSMDiagnosticRef) |
