about summary refs log tree commit diff
path: root/src/comp/middle
diff options
context:
space:
mode:
authorPatrick Walton <pcwalton@mimiga.net>2011-04-26 18:48:02 -0700
committerPatrick Walton <pcwalton@mimiga.net>2011-04-26 19:01:24 -0700
commit532a65485dc2f6a18a81c513c3abfbb34cb88e65 (patch)
tree86ffccb362de2f9e293eebc8d3b9691fc47058c7 /src/comp/middle
parent8216b5fc10e7c7b0d4e9f40bb4f9fdaaaebf9400 (diff)
downloadrust-532a65485dc2f6a18a81c513c3abfbb34cb88e65.tar.gz
rust-532a65485dc2f6a18a81c513c3abfbb34cb88e65.zip
rustc: Actually write the optimized bitcode when --save-temps is on
Diffstat (limited to 'src/comp/middle')
-rw-r--r--src/comp/middle/trans.rs25
1 files changed, 13 insertions, 12 deletions
diff --git a/src/comp/middle/trans.rs b/src/comp/middle/trans.rs
index d14bb86c23d..a36821a7a6f 100644
--- a/src/comp/middle/trans.rs
+++ b/src/comp/middle/trans.rs
@@ -7110,18 +7110,6 @@ fn run_passes(ModuleRef llmod, bool opt, bool verify, bool save_temps,
         llvm.LLVMAddStripDeadPrototypesPass(pm.llpm);
         llvm.LLVMAddDeadTypeEliminationPass(pm.llpm);
         llvm.LLVMAddConstantMergePass(pm.llpm);
-
-        // Generate a post-optimization intermediate file if -save-temps was
-        // specified.
-        if (save_temps) {
-            alt (ot) {
-                case (output_type_bitcode) { /* nothing to do */ }
-                case (_) {
-                    auto filename = mk_intermediate_name(output, "opt.bc");
-                    llvm.LLVMWriteBitcodeToFile(llmod, _str.buf(filename));
-                }
-            }
-        }
     }
 
     if (verify) {
@@ -7140,6 +7128,19 @@ fn run_passes(ModuleRef llmod, bool opt, bool verify, bool save_temps,
             FileType = LLVMAssemblyFile;
         }
 
+        // Write optimized bitcode if --save-temps was on.
+        if (save_temps) {
+            alt (ot) {
+                case (output_type_bitcode) { /* nothing to do */ }
+                case (_) {
+                    auto filename = mk_intermediate_name(output, "opt.bc");
+                    llvm.LLVMRunPassManager(pm.llpm, llmod);
+                    llvm.LLVMWriteBitcodeToFile(llmod, _str.buf(filename));
+                    pm = mk_pass_manager();
+                }
+            }
+        }
+
         llvm.LLVMRustWriteOutputFile(pm.llpm, llmod,
                                      _str.buf(x86.get_target_triple()),
                                      _str.buf(output),