blob: b4f3a5afda2e6b5b660333b88b88da33a2dbb59b [file]
// 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;