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;