Auto merge of #128862 - cblh:fix/128855, r=scottmcm

fix:  #128855 Ensure `Guard`'s `drop` method is removed at `opt-level=s` for `…

fix: #128855

…Copy` types

Added `#[inline]` to the `drop` method in the `Guard` implementation to ensure that the method is removed by the compiler at optimization level `opt-level=s` for `Copy` types. This change aims to align the method's behavior with optimization expectations and ensure it does not affect performance.

r​? `@scottmcm`
This commit is contained in:
bors 2024-08-12 05:22:03 +00:00
commit 1d8f135b20
2 changed files with 14 additions and 0 deletions

View File

@ -889,6 +889,7 @@ impl<T> Guard<'_, T> {
}
impl<T> Drop for Guard<'_, T> {
#[inline]
fn drop(&mut self) {
debug_assert!(self.initialized <= self.array_mut.len());

View File

@ -0,0 +1,13 @@
//@ revisions: NORMAL OPT
//@ [NORMAL] compile-flags: -C opt-level=0 -C debuginfo=2
//@ [OPT] compile-flags: -C opt-level=s -C debuginfo=0
#![crate_type = "lib"]
#![feature(array_from_fn)]
#[no_mangle]
pub fn iota() -> [u8; 16] {
// OPT-NOT: core..array..Guard
// NORMAL: core..array..Guard
std::array::from_fn(|i| i as _)
}