diff options
| author | Tomasz Miąsko <tomasz.miasko@gmail.com> | 2020-11-12 00:00:00 +0000 |
|---|---|---|
| committer | Tomasz Miąsko <tomasz.miasko@gmail.com> | 2020-11-12 00:00:00 +0000 |
| commit | d54ea4f622a788b75d6576281081c4252b1ec05e (patch) | |
| tree | 960894c5e9534e9565bbbb778fbccbedeebba95a /src/test/codegen | |
| parent | 28463aac9621fdfc9fb1bcca2c5d611e0b7d3837 (diff) | |
| download | rust-d54ea4f622a788b75d6576281081c4252b1ec05e.tar.gz rust-d54ea4f622a788b75d6576281081c4252b1ec05e.zip | |
Fix codegen test for issue 37945
Diffstat (limited to 'src/test/codegen')
| -rw-r--r-- | src/test/codegen/issue-37945.rs | 20 |
1 files changed, 14 insertions, 6 deletions
diff --git a/src/test/codegen/issue-37945.rs b/src/test/codegen/issue-37945.rs index 0ca42b7ec83..a91e8e817e4 100644 --- a/src/test/codegen/issue-37945.rs +++ b/src/test/codegen/issue-37945.rs @@ -1,26 +1,34 @@ -// compile-flags: -O +// compile-flags: -O -Zmerge-functions=disabled // ignore-x86 // ignore-arm // ignore-emscripten // ignore-gnux32 // ignore 32-bit platforms (LLVM has a bug with them) -// See issue #37945. +// Check that LLVM understands that `Iter` pointer is not null. Issue #37945. #![crate_type = "lib"] use std::slice::Iter; -// CHECK-LABEL: @is_empty_1 #[no_mangle] pub fn is_empty_1(xs: Iter<f32>) -> bool { -// CHECK-NOT: icmp eq float* {{.*}}, null +// CHECK-LABEL: @is_empty_1( +// CHECK-NEXT: start: +// CHECK-NEXT: [[A:%.*]] = icmp ne i32* %xs.1, null +// CHECK-NEXT: tail call void @llvm.assume(i1 [[A]]) +// CHECK-NEXT: [[B:%.*]] = icmp eq i32* %xs.0, %xs.1 +// CHECK-NEXT: ret i1 [[B:%.*]] {xs}.next().is_none() } -// CHECK-LABEL: @is_empty_2 #[no_mangle] pub fn is_empty_2(xs: Iter<f32>) -> bool { -// CHECK-NOT: icmp eq float* {{.*}}, null +// CHECK-LABEL: @is_empty_2 +// CHECK-NEXT: start: +// CHECK-NEXT: [[C:%.*]] = icmp ne i32* %xs.1, null +// CHECK-NEXT: tail call void @llvm.assume(i1 [[C]]) +// CHECK-NEXT: [[D:%.*]] = icmp eq i32* %xs.0, %xs.1 +// CHECK-NEXT: ret i1 [[D:%.*]] xs.map(|&x| x).next().is_none() } |
