diff options
Diffstat (limited to 'src')
| -rw-r--r-- | src/test/ui/liveness/liveness-issue-77915.rs | 36 |
1 files changed, 36 insertions, 0 deletions
diff --git a/src/test/ui/liveness/liveness-issue-77915.rs b/src/test/ui/liveness/liveness-issue-77915.rs new file mode 100644 index 00000000000..300e4ad8b01 --- /dev/null +++ b/src/test/ui/liveness/liveness-issue-77915.rs @@ -0,0 +1,36 @@ +// Ensure inout asm! operands are marked as used by the liveness pass + +// only-x86_64 +// check-pass + +#![feature(asm)] +#![allow(dead_code)] +#![deny(unused_variables)] + +// Tests the single variable inout case +unsafe fn rep_movsb(mut dest: *mut u8, mut src: *const u8, mut n: usize) -> *mut u8 { + while n != 0 { + asm!( + "rep movsb", + inout("rcx") n, + inout("rsi") src, + inout("rdi") dest, + ); + } + dest +} + +// Tests the split inout case +unsafe fn rep_movsb2(mut dest: *mut u8, mut src: *const u8, mut n: usize) -> *mut u8 { + while n != 0 { + asm!( + "rep movsb", + inout("rcx") n, + inout("rsi") src => src, + inout("rdi") dest, + ); + } + dest +} + +fn main() {} |
