about summary refs log tree commit diff
path: root/src/comp/back
diff options
context:
space:
mode:
authorGraydon Hoare <graydon@mozilla.com>2011-05-10 16:10:08 -0700
committerGraydon Hoare <graydon@mozilla.com>2011-05-10 16:10:08 -0700
commitd6f1fcff6b056f1f0eb54989bbd2a68bf255ff22 (patch)
tree71317080577dd8cac3cb0e0ce48e58960a9d1e96 /src/comp/back
parent813636d52e1d77785e4ec28c0fd5e5f513d2e020 (diff)
downloadrust-d6f1fcff6b056f1f0eb54989bbd2a68bf255ff22.tar.gz
rust-d6f1fcff6b056f1f0eb54989bbd2a68bf255ff22.zip
Add --time-llvm-passes.
Diffstat (limited to 'src/comp/back')
-rw-r--r--src/comp/back/Link.rs16
1 files changed, 14 insertions, 2 deletions
diff --git a/src/comp/back/Link.rs b/src/comp/back/Link.rs
index 15be6dc88de..50f10a804e2 100644
--- a/src/comp/back/Link.rs
+++ b/src/comp/back/Link.rs
@@ -75,11 +75,16 @@ mod Write {
     }
 
     fn run_passes(session.session sess, ModuleRef llmod, str output) {
-        link_intrinsics(sess, llmod);
 
-        auto pm = mk_pass_manager();
         auto opts = sess.get_opts();
 
+        if (opts.time_llvm_passes) {
+          llvm.LLVMRustEnableTimePasses();
+        }
+
+        link_intrinsics(sess, llmod);
+
+        auto pm = mk_pass_manager();
         auto td = mk_target_data(x86.get_data_layout());
         llvm.LLVMAddTargetData(td.lltd, pm.llpm);
 
@@ -165,6 +170,9 @@ mod Write {
                                          Str.buf(output),
                                          FileType);
             llvm.LLVMDisposeModule(llmod);
+            if (opts.time_llvm_passes) {
+              llvm.LLVMRustPrintPassTimings();
+            }
             ret;
         }
 
@@ -172,6 +180,10 @@ mod Write {
 
         llvm.LLVMWriteBitcodeToFile(llmod, Str.buf(output));
         llvm.LLVMDisposeModule(llmod);
+
+        if (opts.time_llvm_passes) {
+          llvm.LLVMRustPrintPassTimings();
+        }
     }
 }