| // This is a non-regression test for issue #81408 involving an lld bug and ThinLTO, on windows. | |
| // MSVC's link.exe doesn't need any workarounds in rustc, but lld does, so we'll check that the | |
| // binary runs successfully instead of using a codegen test. | |
| //@ only-x86_64-pc-windows-msvc | |
| //@ needs-rust-lld | |
| //@ ignore-cross-compile: the built binary is executed | |
| use run_make_support::{run, rustc}; | |
| fn test_with_linker(linker: &str) { | |
| rustc().input("issue_81408.rs").crate_name("issue_81408").crate_type("lib").opt().run(); | |
| rustc() | |
| .input("main.rs") | |
| .crate_type("bin") | |
| .arg("-Clto=thin") | |
| .opt() | |
| .arg(&format!("-Clinker={linker}")) | |
| .extern_("issue_81408", "libissue_81408.rlib") | |
| .run(); | |
| // To make possible failures clearer, print an intro that will only be shown if the test does | |
| // fail when running the binary. | |
| eprint!("Running binary linked with {linker}... "); | |
| run("main"); | |
| eprintln!("ok"); | |
| } | |
| fn main() { | |
| // We want the reproducer to work when linked with both linkers. | |
| test_with_linker("link"); | |
| test_with_linker("rust-lld"); | |
| } |