Mercurial > projects > ldc
diff gen/toobj.cpp @ 1170:e40c65bd8c5d
Allow specific optimization passes to be requested from the command line.
Now you can run "`ldc test.d -c -mem2reg -simplifycfg`" if you feel the urge.
The -O<N> options are still supported, and are inserted in the passes list in
the position where they appear on the command line.
(so -simplifycfg -O1 -instcombine does the "right thing")
One small change: -inline is renamed to -enable-inlining due to a naming
conflict with the option to add the -inline pass. -inline now inserts the
inlining pass in the position specified, not in the middle of -O<N>.
(ldmd has been updated to translate -inline to -enable-inlining)
author | Frits van Bommel <fvbommel wxs.nl> |
---|---|
date | Sun, 29 Mar 2009 15:46:55 +0200 |
parents | ea52660f828b |
children | a6dbd571d417 |
line wrap: on
line diff
--- a/gen/toobj.cpp Sun Mar 29 11:44:32 2009 +0200 +++ b/gen/toobj.cpp Sun Mar 29 15:46:55 2009 +0200 @@ -49,6 +49,7 @@ #include "gen/runtime.h" #include "gen/abi.h" #include "gen/cl_options.h" +#include "gen/optimizer.h" #include "ir/irvar.h" #include "ir/irmodule.h" @@ -61,9 +62,6 @@ ////////////////////////////////////////////////////////////////////////////////////////// -// in gen/optimize.cpp -void ldc_optimize_module(llvm::Module* m, char lvl, bool doinline); - // fwd decl void write_asm_to_file(llvm::TargetMachine &Target, llvm::Module& m, llvm::raw_fd_ostream& Out); void assemble(const llvm::sys::Path& asmpath, const llvm::sys::Path& objpath); @@ -189,10 +187,10 @@ void writeModule(llvm::Module* m, std::string filename) { // run optimizer - ldc_optimize_module(m, global.params.optimizeLevel, global.params.llvmInline); + bool reverify = ldc_optimize_module(m); // verify the llvm - if (!noVerify && (global.params.optimizeLevel >= 0 || global.params.llvmInline)) { + if (!noVerify && reverify) { std::string verifyErr; Logger::println("Verifying module... again..."); LOG_SCOPE;