diff gen/toobj.cpp @ 125:c42d245468ea trunk

[svn r129] Started AA literals. Fixed #15, passing -O will now invoke the optimizer before writing bitcode.
author lindquist
date Wed, 28 Nov 2007 04:52:35 +0100
parents 9c79b61fb638
children 8096ba7082db
line wrap: on
line diff
--- a/gen/toobj.cpp	Wed Nov 28 03:34:37 2007 +0100
+++ b/gen/toobj.cpp	Wed Nov 28 04:52:35 2007 +0100
@@ -43,8 +43,12 @@
 
 //////////////////////////////////////////////////////////////////////////////////////////
 
-void
-Module::genobjfile()
+// in gen/optimize.cpp
+void llvmdc_optimize_module(llvm::Module* m, char lvl, bool doinline);
+
+//////////////////////////////////////////////////////////////////////////////////////////
+
+void Module::genobjfile()
 {
     Logger::cout() << "Generating module: " << (md ? md->toChars() : toChars()) << '\n';
     LOG_SCOPE;
@@ -112,8 +116,6 @@
     // do this again as moduleinfo might have pulled something in!
     DtoEmptyAllLists();
 
-    gTargetData = 0;
-
     // emit the llvm main function if necessary
     if (ir.emitMain) {
         DtoMain();
@@ -134,8 +136,10 @@
         }
     }
 
-    // run passes
-    // TODO
+    // run optimizer
+    if (global.params.optimize) {
+        llvmdc_optimize_module(ir.module, global.params.optimizeLevel, global.params.useInline);
+    }
 
     // write bytecode
     {
@@ -152,6 +156,7 @@
     }
 
     delete ir.module;
+    gTargetData = 0;
     gIR = NULL;
 }