From a4090d28da2068692d262649e99bbb4e4e32ca67 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?D=C3=A1niel=20Buga?= Date: Tue, 25 Aug 2020 17:58:58 +0200 Subject: [PATCH 1/2] Add test for issue #27130 --- src/test/codegen/issue-27130.rs | 22 ++++++++++++++++++++++ 1 file changed, 22 insertions(+) create mode 100644 src/test/codegen/issue-27130.rs diff --git a/src/test/codegen/issue-27130.rs b/src/test/codegen/issue-27130.rs new file mode 100644 index 0000000000000..466245aa1f456 --- /dev/null +++ b/src/test/codegen/issue-27130.rs @@ -0,0 +1,22 @@ +// compile-flags: -O +// min-llvm-version: 11.0 + +#![crate_type = "lib"] + +// CHECK-LABEL: @trim_in_place +#[no_mangle] +pub fn trim_in_place(a: &mut &[u8]) { + while a.first() == Some(&42) { + // CHECK-NOT: slice_index_order_fail + *a = &a[1..]; + } +} + +// CHECK-LABEL: @trim_in_place2 +#[no_mangle] +pub fn trim_in_place2(a: &mut &[u8]) { + while let Some(&42) = a.first() { + // CHECK-NOT: slice_index_order_fail + *a = &a[1..]; + } +} From 046556e94c641d2615bc9f7b11fba7a8573277ce Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?D=C3=A1niel=20Buga?= Date: Fri, 28 Aug 2020 01:16:20 +0200 Subject: [PATCH 2/2] Make sure the functions don't get merged --- src/test/codegen/issue-27130.rs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/test/codegen/issue-27130.rs b/src/test/codegen/issue-27130.rs index 466245aa1f456..7ae78782ff9d1 100644 --- a/src/test/codegen/issue-27130.rs +++ b/src/test/codegen/issue-27130.rs @@ -17,6 +17,6 @@ pub fn trim_in_place(a: &mut &[u8]) { pub fn trim_in_place2(a: &mut &[u8]) { while let Some(&42) = a.first() { // CHECK-NOT: slice_index_order_fail - *a = &a[1..]; + *a = &a[2..]; } }