Rewrite the llvm::Linker fix for LLVM 3.3.

The previous commit changed the behaviour a bit. This solution should have an identical result.
This commit is contained in:
kai 2013-05-05 20:27:12 +02:00
parent ebaa3f08b3
commit 41bbc8fbf5

View file

@ -1097,31 +1097,31 @@ int main(int argc, char** argv)
char* moduleName = m->toChars();
#endif
std::string errormsg;
#if LDC_LLVM_VER >= 303
llvm::Linker linker(llvmModules[0]);
for (size_t i = 1; i < llvmModules.size(); i++)
{
if(linker.linkInModule(llvmModules[i], llvm::Linker::DestroySource, &errormsg))
error("%s", errormsg.c_str());
delete llvmModules[i];
}
llvm::Module *dest = new llvm::Module(moduleName, context);
llvm::Linker linker(dest);
#else
llvm::Linker linker("ldc", moduleName, context);
#endif
std::string errormsg;
for (size_t i = 0; i < llvmModules.size(); i++)
{
if(linker.LinkInModule(llvmModules[i], &errormsg))
#if LDC_LLVM_VER >= 303
if (linker.linkInModule(llvmModules[i], llvm::Linker::DestroySource, &errormsg))
#else
if (linker.LinkInModule(llvmModules[i], &errormsg))
#endif
error("%s", errormsg.c_str());
delete llvmModules[i];
}
#endif
m->deleteObjFile();
writeModule(linker.getModule(), filename);
global.params.objfiles->push(const_cast<char*>(filename));
#if LDC_LLVM_VER >= 303
delete llvmModules[0];
delete dest;
#endif
}