about summary refs log tree commit diff
diff options
context:
space:
mode:
-rw-r--r--src/tools/run-make-support/src/llvm.rs7
-rw-r--r--src/tools/tidy/src/allowed_run_make_makefiles.txt1
-rw-r--r--tests/run-make/llvm-ident/Makefile19
-rw-r--r--tests/run-make/llvm-ident/rmake.rs41
4 files changed, 48 insertions, 20 deletions
diff --git a/src/tools/run-make-support/src/llvm.rs b/src/tools/run-make-support/src/llvm.rs
index 7f42223bf7f..4c9e9a53230 100644
--- a/src/tools/run-make-support/src/llvm.rs
+++ b/src/tools/run-make-support/src/llvm.rs
@@ -180,6 +180,13 @@ impl LlvmFilecheck {
         self.cmd.arg(path.as_ref());
         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 {
diff --git a/src/tools/tidy/src/allowed_run_make_makefiles.txt b/src/tools/tidy/src/allowed_run_make_makefiles.txt
index aa8a0be5fd4..276d2d694cd 100644
--- a/src/tools/tidy/src/allowed_run_make_makefiles.txt
+++ b/src/tools/tidy/src/allowed_run_make_makefiles.txt
@@ -85,7 +85,6 @@ run-make/link-cfg/Makefile
 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/long-linker-command-lines-cmd-exe/Makefile
 run-make/long-linker-command-lines/Makefile
 run-make/longjmp-across-rust/Makefile
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();
+        }
+    });
+}