mirror of https://github.com/rust-lang/rust.git
49 lines
1.1 KiB
Rust
49 lines
1.1 KiB
Rust
//@ only-x86_64
|
|
#![crate_type = "lib"]
|
|
|
|
use std::arch::{asm, global_asm, naked_asm};
|
|
|
|
global_asm!(
|
|
"nop",
|
|
#[cfg(false)]
|
|
//~^ ERROR the `#[cfg(/* ... */)]` and `#[cfg_attr(/* ... */)]` attributes on assembly are unstable
|
|
"nop"
|
|
);
|
|
|
|
#[unsafe(naked)]
|
|
#[no_mangle]
|
|
extern "C" fn naked() {
|
|
naked_asm!(
|
|
"mov rax, 5",
|
|
#[cfg(false)]
|
|
//~^ ERROR the `#[cfg(/* ... */)]` and `#[cfg_attr(/* ... */)]` attributes on assembly are unstable
|
|
"mov rax, {a}",
|
|
"ret",
|
|
#[cfg(false)]
|
|
//~^ ERROR the `#[cfg(/* ... */)]` and `#[cfg_attr(/* ... */)]` attributes on assembly are unstable
|
|
a = const 10,
|
|
)
|
|
}
|
|
|
|
fn asm() {
|
|
unsafe {
|
|
asm!(
|
|
"nop",
|
|
#[cfg(false)]
|
|
//~^ ERROR the `#[cfg(/* ... */)]` and `#[cfg_attr(/* ... */)]` attributes on assembly are unstable
|
|
clobber_abi("C"),
|
|
clobber_abi("C"), //~ ERROR `C` ABI specified multiple times
|
|
);
|
|
}
|
|
}
|
|
|
|
fn bad_attribute() {
|
|
unsafe {
|
|
asm!(
|
|
#[inline]
|
|
//~^ ERROR this attribute is not supported on assembly
|
|
"nop"
|
|
)
|
|
};
|
|
}
|