Auto merge of #126578 - scottmcm:inlining-bonuses-too, r=davidtwco · model-checking/verify-rust-std@7e940ba (original) (raw)

Original file line number Diff line number Diff line change
@@ -103,7 +103,8 @@ macro_rules! iterator {
103 103 // so this new pointer is inside `self` and thus guaranteed to be non-null.
104 104 unsafe {
105 105 if_zst!(mut self,
106 - len => *len = len.unchecked_sub(offset),
106 +// Using the intrinsic directly avoids emitting a UbCheck
107 + len => *len = crate::intrinsics::unchecked_sub(*len, offset),
107 108 _end => self.ptr = self.ptr.add(offset),
108 109 );
109 110 }
@@ -119,7 +120,8 @@ macro_rules! iterator {
119 120 // SAFETY: By our precondition, `offset` can be at most the
120 121 // current length, so the subtraction can never overflow.
121 122 len => unsafe {
122 -*len = len.unchecked_sub(offset);
123 +// Using the intrinsic directly avoids emitting a UbCheck
124 +*len = crate::intrinsics::unchecked_sub(*len, offset);
123 125 self.ptr
124 126 },
125 127 // SAFETY: the caller guarantees that `offset` doesn't exceed `self.len()`,