mirror of
https://github.com/ldc-developers/ldc.git
synced 2025-05-03 00:20:40 +03:00
Fix compile error with LLVM 3.6.
The llvm::Linker class now uses diagnostic messages.
This commit is contained in:
parent
332480460c
commit
e5745f5bb1
2 changed files with 14 additions and 0 deletions
|
@ -915,6 +915,11 @@ static void emitEntryPointInto(llvm::Module* lm)
|
||||||
emitSymbolAddrGlobal(*entryModule, "_end", "_d_execBssEndAddr");
|
emitSymbolAddrGlobal(*entryModule, "_end", "_d_execBssEndAddr");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#if LDC_LLVM_VER >= 306
|
||||||
|
// FIXME: A possible error message is written to the diagnostic context
|
||||||
|
// Do we show these messages?
|
||||||
|
linker.linkInModule(entryModule);
|
||||||
|
#else
|
||||||
std::string linkError;
|
std::string linkError;
|
||||||
#if LDC_LLVM_VER >= 303
|
#if LDC_LLVM_VER >= 303
|
||||||
const bool hadError = linker.linkInModule(entryModule, &linkError);
|
const bool hadError = linker.linkInModule(entryModule, &linkError);
|
||||||
|
@ -924,6 +929,7 @@ static void emitEntryPointInto(llvm::Module* lm)
|
||||||
#endif
|
#endif
|
||||||
if (hadError)
|
if (hadError)
|
||||||
error(Loc(), "%s", linkError.c_str());
|
error(Loc(), "%s", linkError.c_str());
|
||||||
|
#endif
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
@ -1364,12 +1370,16 @@ int main(int argc, char **argv)
|
||||||
std::string errormsg;
|
std::string errormsg;
|
||||||
for (size_t i = 0; i < llvmModules.size(); i++)
|
for (size_t i = 0; i < llvmModules.size(); i++)
|
||||||
{
|
{
|
||||||
|
#if LDC_LLVM_VER >= 306
|
||||||
|
linker.linkInModule(llvmModules[i], llvm::Linker::DestroySource);
|
||||||
|
#else
|
||||||
#if LDC_LLVM_VER >= 303
|
#if LDC_LLVM_VER >= 303
|
||||||
if (linker.linkInModule(llvmModules[i], llvm::Linker::DestroySource, &errormsg))
|
if (linker.linkInModule(llvmModules[i], llvm::Linker::DestroySource, &errormsg))
|
||||||
#else
|
#else
|
||||||
if (linker.LinkInModule(llvmModules[i], &errormsg))
|
if (linker.LinkInModule(llvmModules[i], &errormsg))
|
||||||
#endif
|
#endif
|
||||||
error(Loc(), "%s", errormsg.c_str());
|
error(Loc(), "%s", errormsg.c_str());
|
||||||
|
#endif
|
||||||
delete llvmModules[i];
|
delete llvmModules[i];
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -403,6 +403,9 @@ LLFunction* DtoInlineIRFunction(FuncDeclaration* fdecl)
|
||||||
(std::string(err.getColumnNo(), ' ') + '^').c_str(),
|
(std::string(err.getColumnNo(), ' ') + '^').c_str(),
|
||||||
errstr.c_str(), stream.str().c_str());
|
errstr.c_str(), stream.str().c_str());
|
||||||
|
|
||||||
|
#if LDC_LLVM_VER >= 306
|
||||||
|
llvm::Linker(gIR->module).linkInModule(m.get());
|
||||||
|
#else
|
||||||
#if LDC_LLVM_VER >= 303
|
#if LDC_LLVM_VER >= 303
|
||||||
std::string errstr2 = "";
|
std::string errstr2 = "";
|
||||||
#if LDC_LLVM_VER >= 306
|
#if LDC_LLVM_VER >= 306
|
||||||
|
@ -413,6 +416,7 @@ LLFunction* DtoInlineIRFunction(FuncDeclaration* fdecl)
|
||||||
if(errstr2 != "")
|
if(errstr2 != "")
|
||||||
error(tinst->loc,
|
error(tinst->loc,
|
||||||
"Error when linking in llvm inline ir: %s", errstr2.c_str());
|
"Error when linking in llvm inline ir: %s", errstr2.c_str());
|
||||||
|
#endif
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
LLFunction* fun = gIR->module->getFunction(mangled_name);
|
LLFunction* fun = gIR->module->getFunction(mangled_name);
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue