//@ needs-asm-support // FIXME(#82232, #143834): temporarily renamed to mitigate `#[align]` nameres ambiguity #![feature(rustc_attrs)] #![feature(fn_align)] #![crate_type = "lib"] use std::arch::naked_asm; #[repr(C)] //~^ ERROR attribute should be applied to a struct, enum, or union [E0517] #[unsafe(naked)] extern "C" fn example1() { //~^ NOTE not a struct, enum, or union naked_asm!("") } #[repr(transparent)] //~^ ERROR attribute should be applied to a struct, enum, or union [E0517] #[unsafe(naked)] extern "C" fn example2() { //~^ NOTE not a struct, enum, or union naked_asm!("") } #[repr(C)] //~^ ERROR attribute should be applied to a struct, enum, or union [E0517] #[rustc_align(16)] #[unsafe(naked)] extern "C" fn example3() { //~^ NOTE not a struct, enum, or union naked_asm!("") } // note: two errors because of packed and C #[repr(C, packed)] //~^ ERROR attribute should be applied to a struct or union [E0517] //~| ERROR attribute should be applied to a struct, enum, or union [E0517] #[unsafe(naked)] extern "C" fn example4() { //~^ NOTE not a struct, enum, or union //~| NOTE not a struct or union naked_asm!("") } #[repr(u8)] //~^ ERROR attribute should be applied to an enum [E0517] #[unsafe(naked)] extern "C" fn example5() { //~^ NOTE not an enum naked_asm!("") }