comparison gen/toobj.cpp @ 689:06c05906b054

Always run SimplifyCFG to workaround LLVM bug 2613.
author Christian Kamm <kamm incasoftware de>
date Sun, 12 Oct 2008 15:33:14 +0200
parents 363bb6c0cc80
children 931333ea35c6
comparison
equal deleted inserted replaced
688:9d6d32b969d7 689:06c05906b054
18 #include "llvm/Target/TargetMachine.h" 18 #include "llvm/Target/TargetMachine.h"
19 #include "llvm/Target/TargetMachineRegistry.h" 19 #include "llvm/Target/TargetMachineRegistry.h"
20 #include "llvm/Module.h" 20 #include "llvm/Module.h"
21 #include "llvm/ModuleProvider.h" 21 #include "llvm/ModuleProvider.h"
22 #include "llvm/PassManager.h" 22 #include "llvm/PassManager.h"
23 #include "llvm/LinkAllPasses.h"
23 #include "llvm/System/Program.h" 24 #include "llvm/System/Program.h"
24 #include "llvm/System/Path.h" 25 #include "llvm/System/Path.h"
25 #include "llvm/Support/raw_ostream.h" 26 #include "llvm/Support/raw_ostream.h"
26 27
27 #include "mars.h" 28 #include "mars.h"
159 } 160 }
160 else { 161 else {
161 Logger::println("Verification passed!"); 162 Logger::println("Verification passed!");
162 } 163 }
163 } 164 }
165
166 // always run this pass to eliminate dead code that breaks debug info
167 llvm::PassManager pm;
168 pm.add(new llvm::TargetData(ir.module));
169 pm.add(llvm::createCFGSimplificationPass());
170 pm.run(*ir.module);
164 171
165 // run optimizer 172 // run optimizer
166 ldc_optimize_module(ir.module, global.params.optimizeLevel, global.params.llvmInline); 173 ldc_optimize_module(ir.module, global.params.optimizeLevel, global.params.llvmInline);
167 174
168 // verify the llvm 175 // verify the llvm