Mercurial > projects > ldc
comparison gen/main.cpp @ 1324:b3674ad4026d
Strip metadata for -singleobj as a workaround to a LLVM linking bug.
author | Christian Kamm <kamm incasoftware de> |
---|---|
date | Sat, 09 May 2009 18:57:21 +0200 |
parents | 2bebd938548f |
children | 3647bef175d7 |
comparison
equal
deleted
inserted
replaced
1323:c74dfdcc5043 | 1324:b3674ad4026d |
---|---|
34 | 34 |
35 #include "gen/logger.h" | 35 #include "gen/logger.h" |
36 #include "gen/linker.h" | 36 #include "gen/linker.h" |
37 #include "gen/irstate.h" | 37 #include "gen/irstate.h" |
38 #include "gen/toobj.h" | 38 #include "gen/toobj.h" |
39 #include "gen/passes/Passes.h" | |
39 #include "gen/llvm-version.h" | 40 #include "gen/llvm-version.h" |
40 | 41 |
41 #include "gen/cl_options.h" | 42 #include "gen/cl_options.h" |
42 #include "gen/cl_helpers.h" | 43 #include "gen/cl_helpers.h" |
43 using namespace opts; | 44 using namespace opts; |
867 | 868 |
868 llvm::Linker linker(name, name); | 869 llvm::Linker linker(name, name); |
869 std::string errormsg; | 870 std::string errormsg; |
870 for (int i = 0; i < llvmModules.size(); i++) | 871 for (int i = 0; i < llvmModules.size(); i++) |
871 { | 872 { |
873 //FIXME: workaround for llvm metadata bug: | |
874 // the LinkInModule call asserts with metadata unstripped | |
875 llvm::ModulePass* stripMD = createStripMetaData(); | |
876 stripMD->runOnModule(*llvmModules[i]); | |
877 delete stripMD; | |
878 | |
872 if(linker.LinkInModule(llvmModules[i], &errormsg)) | 879 if(linker.LinkInModule(llvmModules[i], &errormsg)) |
873 error(errormsg.c_str()); | 880 error(errormsg.c_str()); |
874 delete llvmModules[i]; | 881 delete llvmModules[i]; |
875 } | 882 } |
876 | 883 |