diff --git a/gen/toobj.cpp b/gen/toobj.cpp index 41a687242f..5fe2a2c20a 100644 --- a/gen/toobj.cpp +++ b/gen/toobj.cpp @@ -20,6 +20,7 @@ #include "llvm/Module.h" #include "llvm/ModuleProvider.h" #include "llvm/PassManager.h" +#include "llvm/LinkAllPasses.h" #include "llvm/System/Program.h" #include "llvm/System/Path.h" #include "llvm/Support/raw_ostream.h" @@ -162,6 +163,12 @@ void Module::genobjfile(int multiobj, char** envp) } } + // always run this pass to eliminate dead code that breaks debug info + llvm::PassManager pm; + pm.add(new llvm::TargetData(ir.module)); + pm.add(llvm::createCFGSimplificationPass()); + pm.run(*ir.module); + // run optimizer ldc_optimize_module(ir.module, global.params.optimizeLevel, global.params.llvmInline);