Update LLVM.
This commit is contained in:
parent
20f4c45bad
commit
4b22178d32
8 changed files with 61 additions and 21 deletions
|
@ -246,7 +246,7 @@ endif
|
||||||
######################################################################
|
######################################################################
|
||||||
|
|
||||||
# FIXME: x86-ism
|
# FIXME: x86-ism
|
||||||
LLVM_COMPONENTS=x86 arm mips ipo bitreader bitwriter linker asmparser jit mcjit \
|
LLVM_COMPONENTS=x86 arm mips ipo bitreader bitwriter linker asmparser mcjit \
|
||||||
interpreter instrumentation
|
interpreter instrumentation
|
||||||
|
|
||||||
# Only build these LLVM tools
|
# Only build these LLVM tools
|
||||||
|
|
|
@ -3164,8 +3164,7 @@ fn populate_scope_map(cx: &CrateContext,
|
||||||
parent_scope,
|
parent_scope,
|
||||||
file_metadata,
|
file_metadata,
|
||||||
loc.line as c_uint,
|
loc.line as c_uint,
|
||||||
loc.col.to_uint() as c_uint,
|
loc.col.to_uint() as c_uint)
|
||||||
0)
|
|
||||||
};
|
};
|
||||||
|
|
||||||
scope_stack.push(ScopeStackEntry { scope_metadata: scope_metadata,
|
scope_stack.push(ScopeStackEntry { scope_metadata: scope_metadata,
|
||||||
|
@ -3290,8 +3289,7 @@ fn populate_scope_map(cx: &CrateContext,
|
||||||
parent_scope,
|
parent_scope,
|
||||||
file_metadata,
|
file_metadata,
|
||||||
loc.line as c_uint,
|
loc.line as c_uint,
|
||||||
loc.col.to_uint() as c_uint,
|
loc.col.to_uint() as c_uint)
|
||||||
0)
|
|
||||||
};
|
};
|
||||||
|
|
||||||
scope_stack.push(ScopeStackEntry {
|
scope_stack.push(ScopeStackEntry {
|
||||||
|
|
|
@ -1747,8 +1747,7 @@ extern {
|
||||||
Scope: DIDescriptor,
|
Scope: DIDescriptor,
|
||||||
File: DIFile,
|
File: DIFile,
|
||||||
Line: c_uint,
|
Line: c_uint,
|
||||||
Col: c_uint,
|
Col: c_uint)
|
||||||
Discriminator: c_uint)
|
|
||||||
-> DILexicalBlock;
|
-> DILexicalBlock;
|
||||||
|
|
||||||
pub fn LLVMDIBuilderCreateStaticVariable(Builder: DIBuilderRef,
|
pub fn LLVMDIBuilderCreateStaticVariable(Builder: DIBuilderRef,
|
||||||
|
@ -2179,12 +2178,10 @@ pub unsafe fn static_link_hack_this_sucks() {
|
||||||
|
|
||||||
LLVMRustLinkInExternalBitcode(0 as *mut _, 0 as *const _, 0 as size_t);
|
LLVMRustLinkInExternalBitcode(0 as *mut _, 0 as *const _, 0 as size_t);
|
||||||
|
|
||||||
LLVMLinkInJIT();
|
|
||||||
LLVMLinkInMCJIT();
|
LLVMLinkInMCJIT();
|
||||||
LLVMLinkInInterpreter();
|
LLVMLinkInInterpreter();
|
||||||
|
|
||||||
extern {
|
extern {
|
||||||
fn LLVMLinkInJIT();
|
|
||||||
fn LLVMLinkInMCJIT();
|
fn LLVMLinkInMCJIT();
|
||||||
fn LLVMLinkInInterpreter();
|
fn LLVMLinkInInterpreter();
|
||||||
}
|
}
|
||||||
|
|
2
src/llvm
2
src/llvm
|
@ -1 +1 @@
|
||||||
Subproject commit e9d037419441d51ccb0f41aacbc64080b0c6e81b
|
Subproject commit c9b823739d1357a058e7437c00bec6d2d0b00ed6
|
|
@ -118,7 +118,9 @@ LLVMRustAddAnalysisPasses(LLVMTargetMachineRef TM,
|
||||||
LLVMPassManagerRef PMR,
|
LLVMPassManagerRef PMR,
|
||||||
LLVMModuleRef M) {
|
LLVMModuleRef M) {
|
||||||
PassManagerBase *PM = unwrap(PMR);
|
PassManagerBase *PM = unwrap(PMR);
|
||||||
#if LLVM_VERSION_MINOR >= 5
|
#if LLVM_VERSION_MINOR >= 6
|
||||||
|
PM->add(new DataLayoutPass());
|
||||||
|
#elif LLVM_VERSION_MINOR == 5
|
||||||
PM->add(new DataLayoutPass(unwrap(M)));
|
PM->add(new DataLayoutPass(unwrap(M)));
|
||||||
#else
|
#else
|
||||||
PM->add(new DataLayout(unwrap(M)));
|
PM->add(new DataLayout(unwrap(M)));
|
||||||
|
@ -187,7 +189,12 @@ LLVMRustWriteOutputFile(LLVMTargetMachineRef Target,
|
||||||
PassManager *PM = unwrap<PassManager>(PMR);
|
PassManager *PM = unwrap<PassManager>(PMR);
|
||||||
|
|
||||||
std::string ErrorInfo;
|
std::string ErrorInfo;
|
||||||
#if LLVM_VERSION_MINOR >= 4
|
#if LLVM_VERSION_MINOR >= 6
|
||||||
|
std::error_code EC;
|
||||||
|
raw_fd_ostream OS(path, EC, sys::fs::F_None);
|
||||||
|
if (EC)
|
||||||
|
ErrorInfo = EC.message();
|
||||||
|
#elif LLVM_VERSION_MINOR >= 4
|
||||||
raw_fd_ostream OS(path, ErrorInfo, sys::fs::F_None);
|
raw_fd_ostream OS(path, ErrorInfo, sys::fs::F_None);
|
||||||
#else
|
#else
|
||||||
raw_fd_ostream OS(path, ErrorInfo, raw_fd_ostream::F_Binary);
|
raw_fd_ostream OS(path, ErrorInfo, raw_fd_ostream::F_Binary);
|
||||||
|
@ -210,7 +217,12 @@ LLVMRustPrintModule(LLVMPassManagerRef PMR,
|
||||||
PassManager *PM = unwrap<PassManager>(PMR);
|
PassManager *PM = unwrap<PassManager>(PMR);
|
||||||
std::string ErrorInfo;
|
std::string ErrorInfo;
|
||||||
|
|
||||||
#if LLVM_VERSION_MINOR >= 4
|
#if LLVM_VERSION_MINOR >= 6
|
||||||
|
std::error_code EC;
|
||||||
|
raw_fd_ostream OS(path, EC, sys::fs::F_None);
|
||||||
|
if (EC)
|
||||||
|
ErrorInfo = EC.message();
|
||||||
|
#elif LLVM_VERSION_MINOR >= 4
|
||||||
raw_fd_ostream OS(path, ErrorInfo, sys::fs::F_None);
|
raw_fd_ostream OS(path, ErrorInfo, sys::fs::F_None);
|
||||||
#else
|
#else
|
||||||
raw_fd_ostream OS(path, ErrorInfo, raw_fd_ostream::F_Binary);
|
raw_fd_ostream OS(path, ErrorInfo, raw_fd_ostream::F_Binary);
|
||||||
|
|
|
@ -393,13 +393,12 @@ extern "C" LLVMValueRef LLVMDIBuilderCreateLexicalBlock(
|
||||||
LLVMValueRef Scope,
|
LLVMValueRef Scope,
|
||||||
LLVMValueRef File,
|
LLVMValueRef File,
|
||||||
unsigned Line,
|
unsigned Line,
|
||||||
unsigned Col,
|
unsigned Col) {
|
||||||
unsigned Discriminator) {
|
|
||||||
return wrap(Builder->createLexicalBlock(
|
return wrap(Builder->createLexicalBlock(
|
||||||
unwrapDI<DIDescriptor>(Scope),
|
unwrapDI<DIDescriptor>(Scope),
|
||||||
unwrapDI<DIFile>(File), Line, Col
|
unwrapDI<DIFile>(File), Line, Col
|
||||||
#if LLVM_VERSION_MINOR >= 5
|
#if LLVM_VERSION_MINOR == 5
|
||||||
, Discriminator
|
, 0
|
||||||
#endif
|
#endif
|
||||||
));
|
));
|
||||||
}
|
}
|
||||||
|
@ -415,7 +414,11 @@ extern "C" LLVMValueRef LLVMDIBuilderCreateStaticVariable(
|
||||||
bool isLocalToUnit,
|
bool isLocalToUnit,
|
||||||
LLVMValueRef Val,
|
LLVMValueRef Val,
|
||||||
LLVMValueRef Decl = NULL) {
|
LLVMValueRef Decl = NULL) {
|
||||||
|
#if LLVM_VERSION_MINOR == 6
|
||||||
|
return wrap(Builder->createGlobalVariable(unwrapDI<DIDescriptor>(Context),
|
||||||
|
#else
|
||||||
return wrap(Builder->createStaticVariable(unwrapDI<DIDescriptor>(Context),
|
return wrap(Builder->createStaticVariable(unwrapDI<DIDescriptor>(Context),
|
||||||
|
#endif
|
||||||
Name,
|
Name,
|
||||||
LinkageName,
|
LinkageName,
|
||||||
unwrapDI<DIFile>(File),
|
unwrapDI<DIFile>(File),
|
||||||
|
@ -665,11 +668,18 @@ extern "C" void LLVMWriteValueToString(LLVMValueRef Value, RustStringRef str) {
|
||||||
extern "C" bool
|
extern "C" bool
|
||||||
LLVMRustLinkInExternalBitcode(LLVMModuleRef dst, char *bc, size_t len) {
|
LLVMRustLinkInExternalBitcode(LLVMModuleRef dst, char *bc, size_t len) {
|
||||||
Module *Dst = unwrap(dst);
|
Module *Dst = unwrap(dst);
|
||||||
|
#if LLVM_VERSION_MINOR == 5
|
||||||
MemoryBuffer* buf = MemoryBuffer::getMemBufferCopy(StringRef(bc, len));
|
MemoryBuffer* buf = MemoryBuffer::getMemBufferCopy(StringRef(bc, len));
|
||||||
ErrorOr<Module *> Src = llvm::getLazyBitcodeModule(buf, Dst->getContext());
|
ErrorOr<Module *> Src = llvm::getLazyBitcodeModule(buf, Dst->getContext());
|
||||||
|
#else
|
||||||
|
std::unique_ptr<MemoryBuffer> buf = MemoryBuffer::getMemBufferCopy(StringRef(bc, len));
|
||||||
|
ErrorOr<Module *> Src = llvm::getLazyBitcodeModule(std::move(buf), Dst->getContext());
|
||||||
|
#endif
|
||||||
if (!Src) {
|
if (!Src) {
|
||||||
LLVMRustSetLastError(Src.getError().message().c_str());
|
LLVMRustSetLastError(Src.getError().message().c_str());
|
||||||
|
#if LLVM_VERSION_MINOR == 5
|
||||||
delete buf;
|
delete buf;
|
||||||
|
#endif
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -712,12 +722,26 @@ LLVMRustOpenArchive(char *path) {
|
||||||
return nullptr;
|
return nullptr;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#if LLVM_VERSION_MINOR >= 6
|
||||||
|
ErrorOr<std::unique_ptr<Archive>> archive_or =
|
||||||
|
Archive::create(buf_or.get()->getMemBufferRef());
|
||||||
|
|
||||||
|
if (!archive_or) {
|
||||||
|
LLVMRustSetLastError(archive_or.getError().message().c_str());
|
||||||
|
return nullptr;
|
||||||
|
}
|
||||||
|
|
||||||
|
OwningBinary<Archive> *ret = new OwningBinary<Archive>(
|
||||||
|
std::move(archive_or.get()), std::move(buf_or.get()));
|
||||||
|
#else
|
||||||
std::error_code err;
|
std::error_code err;
|
||||||
Archive *ret = new Archive(std::move(buf_or.get()), err);
|
Archive *ret = new Archive(std::move(buf_or.get()), err);
|
||||||
if (err) {
|
if (err) {
|
||||||
LLVMRustSetLastError(err.message().c_str());
|
LLVMRustSetLastError(err.message().c_str());
|
||||||
return NULL;
|
return nullptr;
|
||||||
}
|
}
|
||||||
|
#endif
|
||||||
|
|
||||||
return ret;
|
return ret;
|
||||||
}
|
}
|
||||||
#else
|
#else
|
||||||
|
@ -739,7 +763,14 @@ LLVMRustOpenArchive(char *path) {
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
extern "C" const char*
|
extern "C" const char*
|
||||||
|
#if LLVM_VERSION_MINOR >= 6
|
||||||
|
LLVMRustArchiveReadSection(OwningBinary<Archive> *ob, char *name, size_t *size) {
|
||||||
|
|
||||||
|
std::unique_ptr<Archive> &ar = ob->getBinary();
|
||||||
|
#else
|
||||||
LLVMRustArchiveReadSection(Archive *ar, char *name, size_t *size) {
|
LLVMRustArchiveReadSection(Archive *ar, char *name, size_t *size) {
|
||||||
|
#endif
|
||||||
|
|
||||||
#if LLVM_VERSION_MINOR >= 5
|
#if LLVM_VERSION_MINOR >= 5
|
||||||
Archive::child_iterator child = ar->child_begin(),
|
Archive::child_iterator child = ar->child_begin(),
|
||||||
end = ar->child_end();
|
end = ar->child_end();
|
||||||
|
@ -765,7 +796,11 @@ LLVMRustArchiveReadSection(Archive *ar, char *name, size_t *size) {
|
||||||
}
|
}
|
||||||
|
|
||||||
extern "C" void
|
extern "C" void
|
||||||
|
#if LLVM_VERSION_MINOR >= 6
|
||||||
|
LLVMRustDestroyArchive(OwningBinary<Archive> *ar) {
|
||||||
|
#else
|
||||||
LLVMRustDestroyArchive(Archive *ar) {
|
LLVMRustDestroyArchive(Archive *ar) {
|
||||||
|
#endif
|
||||||
delete ar;
|
delete ar;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -1,4 +1,4 @@
|
||||||
# If this file is modified, then llvm will be forcibly cleaned and then rebuilt.
|
# If this file is modified, then llvm will be forcibly cleaned and then rebuilt.
|
||||||
# The actual contents of this file do not matter, but to trigger a change on the
|
# The actual contents of this file do not matter, but to trigger a change on the
|
||||||
# build bots then the contents should be changed so git updates the mtime.
|
# build bots then the contents should be changed so git updates the mtime.
|
||||||
2014-09-08
|
2014-10-04
|
||||||
|
|
|
@ -32,8 +32,6 @@
|
||||||
#include "llvm/Support/DynamicLibrary.h"
|
#include "llvm/Support/DynamicLibrary.h"
|
||||||
#include "llvm/Support/Memory.h"
|
#include "llvm/Support/Memory.h"
|
||||||
#include "llvm/ExecutionEngine/ExecutionEngine.h"
|
#include "llvm/ExecutionEngine/ExecutionEngine.h"
|
||||||
#include "llvm/ExecutionEngine/JIT.h"
|
|
||||||
#include "llvm/ExecutionEngine/JITMemoryManager.h"
|
|
||||||
#include "llvm/ExecutionEngine/MCJIT.h"
|
#include "llvm/ExecutionEngine/MCJIT.h"
|
||||||
#include "llvm/ExecutionEngine/Interpreter.h"
|
#include "llvm/ExecutionEngine/Interpreter.h"
|
||||||
#include "llvm/Target/TargetMachine.h"
|
#include "llvm/Target/TargetMachine.h"
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue