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