Rollup merge of #126211 - lolbinarycat:llvm-outputs-rmake, r=jieyouxu

migrate tests/run-make/llvm-outputs to use rmake.rs

part of #121876

<!--
If this PR is related to an unstable feature or an otherwise tracked effort,
please link to the relevant tracking issue here. If you don't know of a related
tracking issue or there are none, feel free to ignore this.

This PR will get automatically assigned to a reviewer. In case you would like
a specific user to review your work, you can assign it to them by using

    r​? <reviewer name>
-->
This commit is contained in:
Matthias Krüger 2024-06-10 21:12:26 +02:00 committed by GitHub
commit 61eb29e958
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
4 changed files with 27 additions and 6 deletions

View file

@ -107,6 +107,13 @@ impl Rustc {
self
}
/// Specify path to the output directory. Equivalent to `--out-dir`` in rustc.
pub fn out_dir<P: AsRef<Path>>(&mut self, path: P) -> &mut Self {
self.cmd.arg("--out-dir");
self.cmd.arg(path.as_ref());
self
}
/// This flag defers LTO optimizations to the linker.
pub fn linker_plugin_lto(&mut self, option: &str) -> &mut Self {
self.cmd.arg(format!("-Clinker-plugin-lto={option}"));

View file

@ -122,7 +122,6 @@ run-make/link-framework/Makefile
run-make/link-path-order/Makefile
run-make/linkage-attr-on-static/Makefile
run-make/llvm-ident/Makefile
run-make/llvm-outputs/Makefile
run-make/long-linker-command-lines-cmd-exe/Makefile
run-make/long-linker-command-lines/Makefile
run-make/longjmp-across-rust/Makefile

View file

@ -1,5 +0,0 @@
include ../tools.mk
all:
echo 'fn main() {}' | $(BARE_RUSTC) - --out-dir=$(TMPDIR)/random_directory_that_does_not_exist_ir/ --emit=llvm-ir
echo 'fn main() {}' | $(BARE_RUSTC) - --out-dir=$(TMPDIR)/random_directory_that_does_not_exist_bc/ --emit=llvm-bc

View file

@ -0,0 +1,20 @@
// test that directories get created when emitting llvm bitcode and IR
use run_make_support::{cwd, run_in_tmpdir, rustc};
use std::path::PathBuf;
fn main() {
let mut path_bc = PathBuf::new();
let mut path_ir = PathBuf::new();
run_in_tmpdir(|| {
let p = cwd();
path_bc = p.join("nonexistant_dir_bc");
path_ir = p.join("nonexistant_dir_ir");
rustc().input("-").stdin("fn main() {}").out_dir(&path_bc).emit("llvm-bc").run();
rustc().input("-").stdin("fn main() {}").out_dir(&path_ir).emit("llvm-ir").run();
assert!(path_bc.exists());
assert!(path_ir.exists());
});
assert!(!path_bc.exists());
assert!(!path_ir.exists());
}