| // Check that an implicit default `-Ctarget-cpu` and an explicit default | |
| // `-Ctarget-cpu` compare equal. | |
| // | |
| // NVPTX requires consistent `-Ctarget-cpu` values across crates, but it does | |
| // not require the CPU to be specified explicitly. Therefore, compiling one crate | |
| // without `-Ctarget-cpu` and another crate with the target's default CPU | |
| // explicitly specified must be accepted. | |
| // | |
| // The mismatch revisions additionally check that an implicit or explicit default | |
| // CPU must not match a different explicitly specified CPU. | |
| //@ aux-build:target_cpu_default_implicit.rs | |
| //@ aux-build:target_cpu_default_explicit.rs | |
| //@ aux-build:target_cpu_non_default.rs | |
| //@ compile-flags: --target nvptx64-nvidia-cuda | |
| //@ needs-llvm-components: nvptx | |
| //@ ignore-backends: gcc | |
| //@ revisions: implicit_default explicit_default implicit_mismatch explicit_mismatch | |
| //@[implicit_default] check-pass | |
| //@[explicit_default] compile-flags: -Ctarget-cpu=sm_70 | |
| //@[explicit_default] check-pass | |
| //@[explicit_mismatch] compile-flags: -Ctarget-cpu=sm_70 | |
| #![feature(no_core)] | |
| //[implicit_mismatch]~? ERROR mixing `-Ctarget-cpu` will cause an ABI mismatch | |
| //[explicit_mismatch]~? ERROR mixing `-Ctarget-cpu` will cause an ABI mismatch | |
| #![crate_type = "rlib"] | |
| #![no_core] | |
| #[cfg(any(implicit_default, explicit_default))] | |
| extern crate target_cpu_default_implicit; | |
| #[cfg(any(implicit_default, explicit_default))] | |
| extern crate target_cpu_default_explicit; | |
| #[cfg(any(implicit_mismatch, explicit_mismatch))] | |
| extern crate target_cpu_non_default; |