diff options
| author | bors <bors@rust-lang.org> | 2024-07-01 21:55:41 +0000 |
|---|---|---|
| committer | bors <bors@rust-lang.org> | 2024-07-01 21:55:41 +0000 |
| commit | 7d97c59438e933e86f557ed999da3b8dfc6855a7 (patch) | |
| tree | faf6cf8ffed870bf6cea6f33799266b806f8760e /tests | |
| parent | cf2df68d1f5e56803c97d91e2b1a9f1c9923c533 (diff) | |
| parent | 7276499dc962a2fe5e6d7517ffdf1f866f046ed8 (diff) | |
| download | rust-7d97c59438e933e86f557ed999da3b8dfc6855a7.tar.gz rust-7d97c59438e933e86f557ed999da3b8dfc6855a7.zip | |
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
Diffstat (limited to 'tests')
| -rw-r--r-- | tests/run-make/llvm-ident/Makefile | 19 | ||||
| -rw-r--r-- | tests/run-make/llvm-ident/rmake.rs | 41 |
2 files changed, 41 insertions, 19 deletions
diff --git a/tests/run-make/llvm-ident/Makefile b/tests/run-make/llvm-ident/Makefile deleted file mode 100644 index e583e6018e0..00000000000 --- a/tests/run-make/llvm-ident/Makefile +++ /dev/null @@ -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 diff --git a/tests/run-make/llvm-ident/rmake.rs b/tests/run-make/llvm-ident/rmake.rs new file mode 100644 index 00000000000..f460829288e --- /dev/null +++ b/tests/run-make/llvm-ident/rmake.rs @@ -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(); + } + }); +} |
