11#![ feature( naked_functions, asm_const, linkage) ]
22#![ crate_type = "dylib" ]
33
4- use std:: arch:: asm ;
4+ use std:: arch:: naked_asm ;
55
66pub trait TraitWithConst {
77 const COUNT : u32 ;
@@ -28,7 +28,7 @@ extern "C" fn private_vanilla() -> u32 {
2828
2929#[ naked]
3030extern "C" fn private_naked ( ) -> u32 {
31- unsafe { asm ! ( "mov rax, 42" , "ret" , options ( noreturn ) ) }
31+ unsafe { naked_asm ! ( "mov rax, 42" , "ret" ) }
3232}
3333
3434#[ no_mangle]
@@ -39,7 +39,7 @@ pub extern "C" fn public_vanilla() -> u32 {
3939#[ naked]
4040#[ no_mangle]
4141pub extern "C" fn public_naked ( ) -> u32 {
42- unsafe { asm ! ( "mov rax, 42" , "ret" , options ( noreturn ) ) }
42+ unsafe { naked_asm ! ( "mov rax, 42" , "ret" ) }
4343}
4444
4545pub extern "C" fn public_vanilla_generic < T : TraitWithConst > ( ) -> u32 {
@@ -48,7 +48,7 @@ pub extern "C" fn public_vanilla_generic<T: TraitWithConst>() -> u32 {
4848
4949#[ naked]
5050pub extern "C" fn public_naked_generic < T : TraitWithConst > ( ) -> u32 {
51- unsafe { asm ! ( "mov rax, {}" , "ret" , const T :: COUNT , options ( noreturn ) ) }
51+ unsafe { naked_asm ! ( "mov rax, {}" , "ret" , const T :: COUNT ) }
5252}
5353
5454#[ linkage = "external" ]
@@ -59,7 +59,7 @@ extern "C" fn vanilla_external_linkage() -> u32 {
5959#[ naked]
6060#[ linkage = "external" ]
6161extern "C" fn naked_external_linkage ( ) -> u32 {
62- unsafe { asm ! ( "mov rax, 42" , "ret" , options ( noreturn ) ) }
62+ unsafe { naked_asm ! ( "mov rax, 42" , "ret" ) }
6363}
6464
6565#[ cfg( not( windows) ) ]
@@ -72,7 +72,7 @@ extern "C" fn vanilla_weak_linkage() -> u32 {
7272#[ cfg( not( windows) ) ]
7373#[ linkage = "weak" ]
7474extern "C" fn naked_weak_linkage ( ) -> u32 {
75- unsafe { asm ! ( "mov rax, 42" , "ret" , options( noreturn) ) }
75+ unsafe { naked_asm ! ( "mov rax, 42" , "ret" , options( noreturn) ) }
7676}
7777
7878// functions that are declared in an `extern "C"` block are currently not exported
0 commit comments