From 41bbc8fbf509365b85d07aa3331f501585aba5f9 Mon Sep 17 00:00:00 2001 From: kai Date: Sun, 5 May 2013 20:27:12 +0200 Subject: [PATCH] Rewrite the llvm::Linker fix for LLVM 3.3. The previous commit changed the behaviour a bit. This solution should have an identical result. --- driver/main.cpp | 22 +++++++++++----------- 1 file changed, 11 insertions(+), 11 deletions(-) diff --git a/driver/main.cpp b/driver/main.cpp index 3d84f160..2dcf1af8 100644 --- a/driver/main.cpp +++ b/driver/main.cpp @@ -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(filename)); #if LDC_LLVM_VER >= 303 - delete llvmModules[0]; + delete dest; #endif }