Skip to content

Commit 6d2d47b

Browse files
committed
don't use ld -r with -C codegen-units=1
1 parent 4d9a478 commit 6d2d47b

File tree

1 file changed

+12
-0
lines changed

1 file changed

+12
-0
lines changed

src/librustc/back/write.rs

+12
Original file line numberDiff line numberDiff line change
@@ -476,6 +476,9 @@ pub fn run_passes(sess: &Session,
476476
sess.fatal("can't perform LTO when using multiple codegen units");
477477
}
478478

479+
// Sanity check
480+
assert!(trans.modules.len() == sess.opts.cg.codegen_units);
481+
479482
unsafe {
480483
configure_llvm(sess);
481484
}
@@ -607,6 +610,15 @@ pub fn run_passes(sess: &Session,
607610
};
608611

609612
let link_obj = |output_path: &Path| {
613+
// Running `ld -r` on a single input is kind of pointless.
614+
if sess.opts.cg.codegen_units == 1 {
615+
fs::copy(&crate_output.with_extension("0.o"),
616+
output_path).unwrap();
617+
// Leave the .0.o file around, to mimic the behavior of the normal
618+
// code path.
619+
return;
620+
}
621+
610622
// Some builds of MinGW GCC will pass --force-exe-suffix to ld, which
611623
// will automatically add a .exe extension if the extension is not
612624
// already .exe or .dll. To ensure consistent behavior on Windows, we

0 commit comments

Comments
 (0)