Auto merge of #34178 - shepmaster:llvm-3.7-and-up, r=alexcrichton
Reflect supporting only LLVM 3.7+ in the LLVM wrappers Based on 12abddb06b681f5c1cb389074b5a35d3e260698f, 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
This commit is contained in:
commit
68241f00ad
@ -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,7 @@ 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 +43,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 +53,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;
|
||||
}
|
||||
@ -87,7 +69,7 @@ struct RustArchiveIterator {
|
||||
|
||||
extern "C" RustArchiveIterator*
|
||||
LLVMRustArchiveIteratorNew(RustArchive *ra) {
|
||||
Archive *ar = GET_ARCHIVE(ra);
|
||||
Archive *ar = ra->getBinary();
|
||||
RustArchiveIterator *rai = new RustArchiveIterator();
|
||||
rai->cur = ar->child_begin();
|
||||
rai->end = ar->child_end();
|
||||
@ -137,16 +119,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 +150,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 +173,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;
|
||||
}
|
||||
|
@ -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)
|
||||
|
@ -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
|
||||
}
|
||||
|
@ -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
|
||||
#else
|
||||
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)) {
|
||||
#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)
|
||||
|
Loading…
x
Reference in New Issue
Block a user