We read every piece of feedback, and take your input very seriously.
To see all available qualifiers, see our documentation.
1 parent 13423be commit 36e1414Copy full SHA for 36e1414
tests/codegen/slice-pointer-nonnull-unwrap.rs
@@ -0,0 +1,19 @@
1
+//@ compile-flags: -O
2
+//@ min-llvm-version: 18
3
+#![crate_type = "lib"]
4
+
5
+use std::ptr::NonNull;
6
7
+// CHECK-LABEL: @slice_ptr_len_1
8
+// CHECK: {{.*}}:
9
+// CHECK-NEXT: ret i64 %ptr.1
10
+#[no_mangle]
11
+pub fn slice_ptr_len_1(ptr: *const [u8]) -> usize {
12
+ let ptr = ptr.cast_mut();
13
+ if let Some(ptr) = NonNull::new(ptr) {
14
+ ptr.len()
15
+ } else {
16
+ // We know ptr is null, so we know ptr.wrapping_byte_add(1) is not null.
17
+ NonNull::new(ptr.wrapping_byte_add(1)).unwrap().len()
18
+ }
19
+}
0 commit comments