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