mirror of
https://github.com/rust-lang/rust.git
synced 2024-11-25 16:24:46 +00:00
Auto merge of #126941 - GuillaumeGomez:migrate-run-make-llvm-ident, r=Kobzol
Migrate `run-make/llvm-ident` to `rmake.rs` Part of https://github.com/rust-lang/rust/issues/121876. r? `@Kobzol` try-job: armhf-gnu
This commit is contained in:
commit
7d97c59438
@ -180,6 +180,13 @@ impl LlvmFilecheck {
|
|||||||
self.cmd.arg(path.as_ref());
|
self.cmd.arg(path.as_ref());
|
||||||
self
|
self
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/// `--input-file` option.
|
||||||
|
pub fn input_file<P: AsRef<Path>>(&mut self, input_file: P) -> &mut Self {
|
||||||
|
self.cmd.arg("--input-file");
|
||||||
|
self.cmd.arg(input_file.as_ref());
|
||||||
|
self
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
impl LlvmObjdump {
|
impl LlvmObjdump {
|
||||||
|
@ -85,7 +85,6 @@ run-make/link-cfg/Makefile
|
|||||||
run-make/link-framework/Makefile
|
run-make/link-framework/Makefile
|
||||||
run-make/link-path-order/Makefile
|
run-make/link-path-order/Makefile
|
||||||
run-make/linkage-attr-on-static/Makefile
|
run-make/linkage-attr-on-static/Makefile
|
||||||
run-make/llvm-ident/Makefile
|
|
||||||
run-make/long-linker-command-lines-cmd-exe/Makefile
|
run-make/long-linker-command-lines-cmd-exe/Makefile
|
||||||
run-make/long-linker-command-lines/Makefile
|
run-make/long-linker-command-lines/Makefile
|
||||||
run-make/longjmp-across-rust/Makefile
|
run-make/longjmp-across-rust/Makefile
|
||||||
|
@ -1,19 +0,0 @@
|
|||||||
include ../tools.mk
|
|
||||||
|
|
||||||
# only-linux
|
|
||||||
|
|
||||||
all:
|
|
||||||
# `-Ccodegen-units=16 -Copt-level=2` is used here to trigger thin LTO
|
|
||||||
# across codegen units to test deduplication of the named metadata
|
|
||||||
# (see `LLVMRustPrepareThinLTOImport` for details).
|
|
||||||
echo 'fn main(){}' | $(RUSTC) - --emit=link,obj -Csave-temps -Ccodegen-units=16 -Copt-level=2 --target=$(TARGET)
|
|
||||||
|
|
||||||
# `llvm-dis` is used here since `--emit=llvm-ir` does not emit LLVM IR
|
|
||||||
# for temporary outputs.
|
|
||||||
"$(LLVM_BIN_DIR)"/llvm-dis $(TMPDIR)/*.bc
|
|
||||||
|
|
||||||
# Check LLVM IR files (including temporary outputs) have `!llvm.ident`
|
|
||||||
# named metadata, reusing the related codegen test.
|
|
||||||
set -e; for f in $(TMPDIR)/*.ll; do \
|
|
||||||
$(LLVM_FILECHECK) --input-file $$f ../../codegen/llvm-ident.rs; \
|
|
||||||
done
|
|
41
tests/run-make/llvm-ident/rmake.rs
Normal file
41
tests/run-make/llvm-ident/rmake.rs
Normal file
@ -0,0 +1,41 @@
|
|||||||
|
//@ only-linux
|
||||||
|
//@ ignore-cross-compile
|
||||||
|
|
||||||
|
use run_make_support::llvm::llvm_bin_dir;
|
||||||
|
use run_make_support::{cmd, env_var, llvm_filecheck, read_dir, rustc, source_root};
|
||||||
|
|
||||||
|
use std::ffi::OsStr;
|
||||||
|
|
||||||
|
fn main() {
|
||||||
|
// `-Ccodegen-units=16 -Copt-level=2` is used here to trigger thin LTO
|
||||||
|
// across codegen units to test deduplication of the named metadata
|
||||||
|
// (see `LLVMRustPrepareThinLTOImport` for details).
|
||||||
|
rustc()
|
||||||
|
.emit("link,obj")
|
||||||
|
.arg("-")
|
||||||
|
.arg("-Csave-temps")
|
||||||
|
.codegen_units(16)
|
||||||
|
.opt_level("2")
|
||||||
|
.target(&env_var("TARGET"))
|
||||||
|
.stdin("fn main(){}")
|
||||||
|
.run();
|
||||||
|
|
||||||
|
// `llvm-dis` is used here since `--emit=llvm-ir` does not emit LLVM IR
|
||||||
|
// for temporary outputs.
|
||||||
|
let mut files = Vec::new();
|
||||||
|
read_dir(".", |path| {
|
||||||
|
if path.is_file() && path.extension().is_some_and(|ext| ext == OsStr::new("bc")) {
|
||||||
|
files.push(path.to_path_buf());
|
||||||
|
}
|
||||||
|
});
|
||||||
|
cmd(llvm_bin_dir().join("llvm-dis")).args(&files).run();
|
||||||
|
|
||||||
|
// Check LLVM IR files (including temporary outputs) have `!llvm.ident`
|
||||||
|
// named metadata, reusing the related codegen test.
|
||||||
|
let llvm_ident_path = source_root().join("tests/codegen/llvm-ident.rs");
|
||||||
|
read_dir(".", |path| {
|
||||||
|
if path.is_file() && path.extension().is_some_and(|ext| ext == OsStr::new("ll")) {
|
||||||
|
llvm_filecheck().input_file(path).arg(&llvm_ident_path).run();
|
||||||
|
}
|
||||||
|
});
|
||||||
|
}
|
Loading…
Reference in New Issue
Block a user