//@ ignore-debug: the debug assertions get in the way //@ compile-flags: -O #![crate_type = "lib"] #![feature(exact_size_is_empty)] use std::vec; // CHECK-LABEL: @vec_iter_len_nonnull #[no_mangle] pub fn vec_iter_len_nonnull(it: &vec::IntoIter) -> usize { // CHECK: load ptr // CHECK-SAME: !nonnull // CHECK-SAME: !noundef // CHECK: load ptr // CHECK-SAME: !nonnull // CHECK-SAME: !noundef // CHECK: sub nuw // CHECK: ret it.len() } // CHECK-LABEL: @vec_iter_is_empty_nonnull #[no_mangle] pub fn vec_iter_is_empty_nonnull(it: &vec::IntoIter) -> bool { // CHECK: load ptr // CHECK-SAME: !nonnull // CHECK-SAME: !noundef // CHECK: load ptr // CHECK-SAME: !nonnull // CHECK-SAME: !noundef // CHECK: ret it.is_empty() } // CHECK-LABEL: @vec_iter_next_nonnull #[no_mangle] pub fn vec_iter_next_nonnull(it: &mut vec::IntoIter) -> Option { // CHECK: load ptr // CHECK-SAME: !nonnull // CHECK-SAME: !noundef // CHECK: load ptr // CHECK-SAME: !nonnull // CHECK-SAME: !noundef // CHECK: ret it.next() } // CHECK-LABEL: @vec_iter_next_back_nonnull #[no_mangle] pub fn vec_iter_next_back_nonnull(it: &mut vec::IntoIter) -> Option { // CHECK: load ptr // CHECK-SAME: !nonnull // CHECK-SAME: !noundef // CHECK: load ptr // CHECK-SAME: !nonnull // CHECK-SAME: !noundef // CHECK: ret it.next_back() }