mirror of
https://github.com/ldc-developers/ldc.git
synced 2025-05-07 03:16:05 +03:00
llvm 7.0 fixes
This commit is contained in:
parent
cda084db79
commit
0191c75800
2 changed files with 17 additions and 2 deletions
|
@ -161,7 +161,14 @@ struct ModuleListener {
|
|||
|
||||
template <typename T> auto operator()(T &&object) -> T {
|
||||
if (nullptr != stream) {
|
||||
#if LDC_LLVM_VER >= 700
|
||||
disassemble(targetmachine,
|
||||
*llvm::cantFail(llvm::object::ObjectFile::createObjectFile(
|
||||
object->getMemBufferRef())),
|
||||
*stream);
|
||||
#else
|
||||
disassemble(targetmachine, *object->getBinary(), *stream);
|
||||
#endif
|
||||
}
|
||||
return std::move(object);
|
||||
}
|
||||
|
@ -180,7 +187,7 @@ private:
|
|||
llvm::orc::IRCompileLayer<ListenerLayerT, llvm::orc::SimpleCompiler>;
|
||||
#if LDC_LLVM_VER >= 700
|
||||
using ModuleHandleT = llvm::orc::VModuleKey;
|
||||
llvm::orc::SymbolStringPool stringPool;
|
||||
std::shared_ptr<llvm::orc::SymbolStringPool> stringPool;
|
||||
llvm::orc::ExecutionSession execSession;
|
||||
std::shared_ptr<llvm::orc::SymbolResolver> resolver;
|
||||
#else
|
||||
|
@ -207,6 +214,7 @@ public:
|
|||
: targetmachine(createTargetMachine()),
|
||||
dataLayout(targetmachine->createDataLayout()),
|
||||
#if LDC_LLVM_VER >= 700
|
||||
stringPool(std::make_shared<llvm::orc::SymbolStringPool>()),
|
||||
execSession(stringPool), resolver(createResolver()),
|
||||
objectLayer(execSession,
|
||||
[this](llvm::orc::VModuleKey) {
|
||||
|
@ -278,6 +286,7 @@ private:
|
|||
#if LDC_LLVM_VER >= 700
|
||||
std::shared_ptr<llvm::orc::SymbolResolver> createResolver() {
|
||||
return llvm::orc::createLegacyLookupResolver(
|
||||
execSession,
|
||||
[this](const std::string &name) -> llvm::JITSymbol {
|
||||
if (auto Sym = compileLayer.findSymbol(name, false)) {
|
||||
return Sym;
|
||||
|
|
|
@ -289,7 +289,13 @@ void disassemble(const llvm::TargetMachine &tm,
|
|||
// Streamer takes ownership of mip mab
|
||||
auto asmStreamer = unique(target.createAsmStreamer(
|
||||
ctx, llvm::make_unique<llvm::formatted_raw_ostream>(os), true, true,
|
||||
mip.release(), nullptr, mab.release(), false));
|
||||
mip.release(), nullptr,
|
||||
#if LDC_LLVM_VER >= 700
|
||||
std::move(mab),
|
||||
#else
|
||||
mab.release(),
|
||||
#endif
|
||||
false));
|
||||
if (nullptr == asmStreamer) {
|
||||
return;
|
||||
}
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue