//@ needs-asm-support #![warn(clippy::pointers_in_nomem_asm_block)] #![crate_type = "lib"] #![no_std] use core::arch::asm; unsafe fn nomem_bad(p: &i32) { unsafe { asm!( "asdf {p1}, {p2}, {p3}", p1 = in(reg) p, //~^ pointers_in_nomem_asm_block p2 = in(reg) p as *const _ as usize, p3 = in(reg) p, options(nomem, nostack, preserves_flags) ); } } unsafe fn nomem_good(p: &i32) { unsafe { asm!("asdf {p}", p = in(reg) p, options(readonly, nostack, preserves_flags)); let p = p as *const i32 as usize; asm!("asdf {p}", p = in(reg) p, options(nomem, nostack, preserves_flags)); } } unsafe fn nomem_bad2(p: &mut i32) { unsafe { asm!("asdf {p}", p = in(reg) p, options(nomem, nostack, preserves_flags)); //~^ pointers_in_nomem_asm_block } } unsafe fn nomem_fn(p: extern "C" fn()) { unsafe { asm!("call {p}", p = in(reg) p, options(nomem)); //~^ pointers_in_nomem_asm_block } }