//@ only-linux //@ ignore-cross-compile use run_make_support::llvm::llvm_bin_dir; use run_make_support::{ cmd, env_var, has_extension, llvm_filecheck, rustc, shallow_find_files, source_root, }; 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_buf("fn main(){}") .run(); // `llvm-dis` is used here since `--emit=llvm-ir` does not emit LLVM IR // for temporary outputs. let files = shallow_find_files(".", |path| has_extension(path, "bc")); 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"); let files = shallow_find_files(".", |path| has_extension(path, "ll")); for file in files { llvm_filecheck().input_file(file).arg(&llvm_ident_path).run(); } }