22#![ crate_type = "lib" ]
33#![ no_std]
44
5+ use core:: arch:: asm;
6+
57unsafe fn nomem_bad ( p : & i32 ) {
6- core :: arch :: asm!(
8+ asm ! (
79 "asdf {p1}, {p2}, {p3}" ,
810 p1 = in( reg) p,
911 p2 = in( reg) p as * const _ as usize ,
@@ -12,23 +14,16 @@ unsafe fn nomem_bad(p: &i32) {
1214 ) ;
1315}
1416
15- unsafe fn readonly_bad ( p : & mut i32 ) {
16- core:: arch:: asm!( "asdf {p}" , p = in( reg) p, options( readonly, nostack, preserves_flags) ) ;
17- }
18-
1917unsafe fn nomem_good ( p : & i32 ) {
20- core :: arch :: asm!( "asdf {p}" , p = in( reg) p, options( readonly, nostack, preserves_flags) ) ;
18+ asm ! ( "asdf {p}" , p = in( reg) p, options( readonly, nostack, preserves_flags) ) ;
2119 let p = p as * const i32 as usize ;
22- core :: arch :: asm!( "asdf {p}" , p = in( reg) p, options( nomem, nostack, preserves_flags) ) ;
20+ asm ! ( "asdf {p}" , p = in( reg) p, options( nomem, nostack, preserves_flags) ) ;
2321}
2422
25- unsafe fn readonly_good ( p : & mut i32 ) {
26- core:: arch:: asm!( "asdf {p}" , p = in( reg) p, options( nostack, preserves_flags) ) ;
27- core:: arch:: asm!( "asdf {p}" , p = in( reg) & * p, options( readonly, nostack, preserves_flags) ) ;
28- let p = p as * const i32 ;
29- core:: arch:: asm!( "asdf {p}" , p = in( reg) p, options( readonly, nostack, preserves_flags) ) ;
23+ unsafe fn nomem_bad2 ( p : & mut i32 ) {
24+ asm ! ( "asdf {p}" , p = in( reg) p, options( nomem, nostack, preserves_flags) ) ;
3025}
3126
32- unsafe fn nomem_bad2 ( p : & mut i32 ) {
33- core :: arch :: asm!( "asdf {p}" , p = in( reg) p, options( nomem, nostack , preserves_flags ) ) ;
27+ unsafe fn nomem_fn ( p : extern "C" fn ( ) ) {
28+ asm ! ( "call {p}" , p = in( reg) p, options( nomem) ) ;
3429}
0 commit comments