#include "llvm/IR/DiagnosticInfo.h"
#include "llvm/IR/DiagnosticPrinter.h"
-#if LLVM_VERSION_MINOR >= 5
#include "llvm/IR/CallSite.h"
-#else
-#include "llvm/Support/CallSite.h"
-#endif
//===----------------------------------------------------------------------===
//
static char *LastError;
-#if LLVM_VERSION_MINOR >= 5
extern "C" LLVMMemoryBufferRef
LLVMRustCreateMemoryBufferWithContentsOfFile(const char *Path) {
ErrorOr<std::unique_ptr<MemoryBuffer>> buf_or = MemoryBuffer::getFile(Path,
}
return wrap(buf_or.get().release());
}
-#else
-extern "C" LLVMMemoryBufferRef
-LLVMRustCreateMemoryBufferWithContentsOfFile(const char *Path) {
- OwningPtr<MemoryBuffer> buf;
- error_code err = MemoryBuffer::getFile(Path, buf, -1, false);
- if (err) {
- LLVMRustSetLastError(err.message().c_str());
- return NULL;
- }
- return wrap(buf.take());
-}
-#endif
extern "C" char *LLVMRustGetLastError(void) {
char *ret = LastError;
}
-#if LLVM_VERSION_MINOR >= 5
extern "C" void LLVMAddDereferenceableCallSiteAttr(LLVMValueRef Instr, unsigned idx, uint64_t b) {
CallSite Call = CallSite(unwrap<Instruction>(Instr));
AttrBuilder B;
AttributeSet::get(Call->getContext(),
idx, B)));
}
-#else
-extern "C" void LLVMAddDereferenceableCallSiteAttr(LLVMValueRef, unsigned, uint64_t) {}
-#endif
extern "C" void LLVMAddFunctionAttribute(LLVMValueRef Fn, unsigned index, uint64_t Val) {
Function *A = unwrap<Function>(Fn);
A->addAttributes(index, AttributeSet::get(A->getContext(), index, B));
}
-#if LLVM_VERSION_MINOR >= 5
extern "C" void LLVMAddDereferenceableAttr(LLVMValueRef Fn, unsigned index, uint64_t bytes) {
Function *A = unwrap<Function>(Fn);
AttrBuilder B;
B.addDereferenceableAttr(bytes);
A->addAttributes(index, AttributeSet::get(A->getContext(), index, B));
}
-#else
-extern "C" void LLVMAddDereferenceableAttr(LLVMValueRef, unsigned, uint64_t) {}
-#endif
extern "C" void LLVMAddFunctionAttrString(LLVMValueRef Fn, unsigned index, const char *Name) {
Function *F = unwrap<Function>(Fn);
AtomicOrdering order,
AtomicOrdering failure_order) {
return wrap(unwrap(B)->CreateAtomicCmpXchg(unwrap(target), unwrap(old),
- unwrap(source), order
-#if LLVM_VERSION_MINOR >= 5
- , failure_order
-#endif
+ unwrap(source), order,
+ failure_order
));
}
extern "C" LLVMValueRef LLVMBuildAtomicFence(LLVMBuilderRef B, AtomicOrdering order) {
return DIT(ref ? unwrap<MDNode>(ref) : NULL);
}
-#if LLVM_VERSION_MINOR >= 5
extern "C" const uint32_t LLVMRustDebugMetadataVersion = DEBUG_METADATA_VERSION;
-#else
-extern "C" const uint32_t LLVMRustDebugMetadataVersion = 1;
-#endif
extern "C" void LLVMRustAddModuleFlag(LLVMModuleRef M,
const char *name,
unwrapDI<DIType>(DerivedFrom),
unwrapDI<DIArray>(Elements),
RunTimeLang,
- unwrapDI<DIType>(VTableHolder)
-#if LLVM_VERSION_MINOR >= 4
- ,UniqueId
-#endif
+ unwrapDI<DIType>(VTableHolder),
+ UniqueId
));
}
#if LLVM_VERSION_MINOR < 6
if (AddrOpsCount > 0) {
SmallVector<llvm::Value *, 16> addr_ops;
- llvm::Type *Int64Ty = Type::getInt64Ty(VMContext);
- for (int i = 0; i < AddrOpsCount; ++i)
+ 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(
LLVMMetadataRef* Ptr,
unsigned Count) {
return wrap(Builder->getOrCreateArray(
+#if LLVM_VERSION_MINOR >= 6
ArrayRef<Metadata*>(unwrap(Ptr), Count)));
+#else
+ ArrayRef<Value*>(reinterpret_cast<Value**>(Ptr), Count)));
+#endif
}
extern "C" LLVMValueRef LLVMDIBuilderInsertDeclareAtEnd(
AlignInBits,
Flags,
unwrapDI<DIArray>(Elements),
- RunTimeLang
-#if LLVM_VERSION_MINOR >= 4
- ,UniqueId
-#endif
+ RunTimeLang,
+ UniqueId
));
}
-#if LLVM_VERSION_MINOR < 5
-extern "C" void LLVMSetUnnamedAddr(LLVMValueRef Value, LLVMBool Unnamed) {
- unwrap<GlobalValue>(Value)->setUnnamedAddr(Unnamed);
-}
-#endif
-
extern "C" LLVMMetadataRef LLVMDIBuilderCreateTemplateTypeParameter(
DIBuilderRef Builder,
LLVMMetadataRef Scope,
os << ")";
}
-#if LLVM_VERSION_MINOR >= 5
extern "C" bool
LLVMRustLinkInExternalBitcode(LLVMModuleRef dst, char *bc, size_t len) {
Module *Dst = unwrap(dst);
}
return true;
}
-#else
-extern "C" bool
-LLVMRustLinkInExternalBitcode(LLVMModuleRef dst, char *bc, size_t len) {
- Module *Dst = unwrap(dst);
- MemoryBuffer* buf = MemoryBuffer::getMemBufferCopy(StringRef(bc, len));
- std::string Err;
- Module *Src = llvm::getLazyBitcodeModule(buf, Dst->getContext(), &Err);
- if (!Src) {
- LLVMRustSetLastError(Err.c_str());
- delete buf;
- return false;
- }
-
- if (Linker::LinkModules(Dst, Src, Linker::DestroySource, &Err)) {
- LLVMRustSetLastError(Err.c_str());
- return false;
- }
- return true;
-}
-#endif
-#if LLVM_VERSION_MINOR >= 5
extern "C" void*
LLVMRustOpenArchive(char *path) {
ErrorOr<std::unique_ptr<MemoryBuffer>> buf_or = MemoryBuffer::getFile(path,
return ret;
}
-#else
-extern "C" void*
-LLVMRustOpenArchive(char *path) {
- OwningPtr<MemoryBuffer> buf;
- error_code err = MemoryBuffer::getFile(path, buf, -1, false);
- if (err) {
- LLVMRustSetLastError(err.message().c_str());
- return NULL;
- }
- Archive *ret = new Archive(buf.take(), err);
- if (err) {
- LLVMRustSetLastError(err.message().c_str());
- return NULL;
- }
- return ret;
-}
-#endif
extern "C" const char*
#if LLVM_VERSION_MINOR >= 6
LLVMRustArchiveReadSection(Archive *ar, char *name, size_t *size) {
#endif
-#if LLVM_VERSION_MINOR >= 5
Archive::child_iterator child = ar->child_begin(),
end = ar->child_end();
for (; child != end; ++child) {
ErrorOr<StringRef> name_or_err = child->getName();
if (name_or_err.getError()) continue;
StringRef sect_name = name_or_err.get();
-#else
- Archive::child_iterator child = ar->begin_children(),
- end = ar->end_children();
- for (; child != end; ++child) {
- StringRef sect_name;
- error_code err = child->getName(sect_name);
- if (err) continue;
-#endif
if (sect_name.trim(" ") == name) {
StringRef buf = child->getBuffer();
*size = buf.size();
delete ar;
}
-#if LLVM_VERSION_MINOR >= 5
extern "C" void
LLVMRustSetDLLExportStorageClass(LLVMValueRef Value) {
GlobalValue *V = unwrap<GlobalValue>(Value);
V->setDLLStorageClass(GlobalValue::DLLExportStorageClass);
}
-#else
-extern "C" void
-LLVMRustSetDLLExportStorageClass(LLVMValueRef Value) {
- LLVMSetLinkage(Value, LLVMDLLExportLinkage);
-}
-#endif
extern "C" int
LLVMVersionMinor() {
extern "C" int
LLVMRustGetSectionName(LLVMSectionIteratorRef SI, const char **ptr) {
StringRef ret;
-#if LLVM_VERSION_MINOR >= 5
if (std::error_code ec = (*unwrap(SI))->getName(ret))
-#else
- if (error_code ec = (*unwrap(SI))->getName(ret))
-#endif
report_fatal_error(ec.message());
*ptr = ret.data();
return ret.size();