]> git.lizzy.rs Git - rust.git/commitdiff
don't leave unwanted temporary files with --emit=ir/asm
authorStuart Pernsteiner <spernsteiner@mozilla.com>
Wed, 27 Aug 2014 21:49:17 +0000 (14:49 -0700)
committerStuart Pernsteiner <spernsteiner@mozilla.com>
Fri, 5 Sep 2014 16:18:57 +0000 (09:18 -0700)
src/librustc/back/write.rs
src/test/run-make/output-type-permutations/Makefile

index 2760ae80110bcfd1851213a762661d482846cf1e..d87dd84bb32b20031b963e7926b59858df46bb90 100644 (file)
@@ -588,12 +588,15 @@ pub fn run_passes(sess: &Session,
             //    to copy `foo.0.x` to `foo.x`.
             fs::copy(&crate_output.with_extension(ext),
                      &crate_output.path(output_type)).unwrap();
+            if !sess.opts.cg.save_temps {
+                // The user just wants `foo.x`, not `foo.0.x`.
+                remove(sess, &crate_output.with_extension(ext));
+            }
         } else {
             if crate_output.single_output_file.is_some() {
                 // 2) Multiple codegen units, with `-o some_name`.  We have
                 //    no good solution for this case, so warn the user.
-                sess.warn(format!("ignoring specified output filename \
-                                   because multiple .{} files were produced",
+                sess.warn(format!("ignoring -o because multiple .{} files were produced",
                                   ext).as_slice());
             } else {
                 // 3) Multiple codegen units, but no `-o some_name`.  We
@@ -670,7 +673,7 @@ pub fn run_passes(sess: &Session,
     //  - crate.metadata.bc
     //  - crate.metadata.o
     //  - crate.o (linked from crate.##.o)
-    //  - crate.bc (copied from crate.0.bc, or an empty bitcode file)
+    //  - crate.bc (copied from crate.0.bc)
     // We may create additional files if requested by the user (through
     // `-C save-temps` or `--emit=` flags).
 
index c163a5bec086f7a5e0dafa95b2fcdde4e8d82e45..fed071d1a43c28a27435a5169d058609cc829291 100644 (file)
@@ -5,40 +5,69 @@ all:
        $(call REMOVE_RLIBS,bar)
        $(call REMOVE_DYLIBS,bar)
        rm $(TMPDIR)/$(call STATICLIB_GLOB,bar)
+       # Check that $(TMPDIR) is empty.
+       [ "$$(ls -1 $(TMPDIR) | wc -l)" -eq "0" ]
+
        $(RUSTC) foo.rs --crate-type=bin
        rm $(TMPDIR)/$(call BIN,bar)
+       [ "$$(ls -1 $(TMPDIR) | wc -l)" -eq "0" ]
+
        $(RUSTC) foo.rs --emit=asm,ir,bc,obj,link
        rm $(TMPDIR)/bar.ll
        rm $(TMPDIR)/bar.bc
        rm $(TMPDIR)/bar.s
        rm $(TMPDIR)/bar.o
        rm $(TMPDIR)/$(call BIN,bar)
-       $(RUSTC) foo.rs --emit=asm,ir,bc,obj,link --crate-type=staticlib
-       rm $(TMPDIR)/bar.ll
-       rm $(TMPDIR)/bar.s
-       rm $(TMPDIR)/bar.o
-       rm $(TMPDIR)/$(call STATICLIB_GLOB,bar)
+       [ "$$(ls -1 $(TMPDIR) | wc -l)" -eq "0" ]
+
        $(RUSTC) foo.rs --emit=asm -o $(TMPDIR)/foo
        rm $(TMPDIR)/foo
+       [ "$$(ls -1 $(TMPDIR) | wc -l)" -eq "0" ]
+
        $(RUSTC) foo.rs --emit=bc -o $(TMPDIR)/foo
        rm $(TMPDIR)/foo
+       [ "$$(ls -1 $(TMPDIR) | wc -l)" -eq "0" ]
+
        $(RUSTC) foo.rs --emit=ir -o $(TMPDIR)/foo
        rm $(TMPDIR)/foo
+       [ "$$(ls -1 $(TMPDIR) | wc -l)" -eq "0" ]
+
        $(RUSTC) foo.rs --emit=obj -o $(TMPDIR)/foo
        rm $(TMPDIR)/foo
+       [ "$$(ls -1 $(TMPDIR) | wc -l)" -eq "0" ]
+
        $(RUSTC) foo.rs --emit=link -o $(TMPDIR)/foo
        rm $(TMPDIR)/$(call BIN,foo)
+       [ "$$(ls -1 $(TMPDIR) | wc -l)" -eq "0" ]
+
        $(RUSTC) foo.rs --crate-type=rlib -o $(TMPDIR)/foo
        rm $(TMPDIR)/foo
+       [ "$$(ls -1 $(TMPDIR) | wc -l)" -eq "0" ]
+
        $(RUSTC) foo.rs --crate-type=dylib -o $(TMPDIR)/foo
        rm $(TMPDIR)/$(call BIN,foo)  # FIXME 13794
+       [ "$$(ls -1 $(TMPDIR) | wc -l)" -eq "0" ]
+
        $(RUSTC) foo.rs --crate-type=staticlib -o $(TMPDIR)/foo
        rm $(TMPDIR)/foo
+       [ "$$(ls -1 $(TMPDIR) | wc -l)" -eq "0" ]
+
        $(RUSTC) foo.rs --crate-type=bin -o $(TMPDIR)/foo
        rm $(TMPDIR)/$(call BIN,foo)
+       [ "$$(ls -1 $(TMPDIR) | wc -l)" -eq "0" ]
+
+       $(RUSTC) foo.rs --emit=asm,ir,bc,obj,link --crate-type=staticlib
+       rm $(TMPDIR)/bar.ll
+       rm $(TMPDIR)/bar.s
+       rm $(TMPDIR)/bar.o
+       rm $(TMPDIR)/$(call STATICLIB_GLOB,bar)
        mv $(TMPDIR)/bar.bc $(TMPDIR)/foo.bc
+       # Don't check that the $(TMPDIR) is empty - we left `foo.bc` for later
+       # comparison.
+
        $(RUSTC) foo.rs --emit=bc,link --crate-type=rlib
        cmp $(TMPDIR)/foo.bc $(TMPDIR)/bar.bc
        rm $(TMPDIR)/bar.bc
        rm $(TMPDIR)/foo.bc
        $(call REMOVE_RLIBS,bar)
+       [ "$$(ls -1 $(TMPDIR) | wc -l)" -eq "0" ]