1 // Ensure inout asm! operands are marked as used by the liveness pass
8 #![warn(unused_assignments)]
9 #![warn(unused_variables)]
11 // Test the single inout case
12 unsafe fn f1(mut src: *const u8) {
13 asm!("/*{0}*/", inout(reg) src); //~ WARN value assigned to `src` is never read
16 unsafe fn f2(mut src: *const u8) -> *const u8 {
17 asm!("/*{0}*/", inout(reg) src);
21 // Test the split inout case
22 unsafe fn f3(mut src: *const u8) {
23 asm!("/*{0}*/", inout(reg) src => src); //~ WARN value assigned to `src` is never read
26 unsafe fn f4(mut src: *const u8) -> *const u8 {
27 asm!("/*{0}*/", inout(reg) src => src);
31 // Tests the use of field projections
36 unsafe fn f5(src: &mut S) {
37 asm!("/*{0}*/", inout(reg) src.field);
40 unsafe fn f6(src: &mut S) {
41 asm!("/*{0}*/", inout(reg) src.field => src.field);