diff options
| author | Joshua Wong <joshuawong@anticentri.st> | 2025-01-26 03:36:50 -0500 | 
|---|---|---|
| committer | Joshua Wong <joshuawong@anticentri.st> | 2025-01-26 03:48:27 -0500 | 
| commit | 97005678c38fd391c9b502d011cc3f3d4434a18a (patch) | |
| tree | 1ba4600fb6a72a6a204c9428db946c8f67f20179 /tests/codegen/box-default-debug-copies.rs | |
| parent | 80faf203515bf3be214ad3ffc019b55b026b1220 (diff) | |
| download | rust-97005678c38fd391c9b502d011cc3f3d4434a18a.tar.gz rust-97005678c38fd391c9b502d011cc3f3d4434a18a.zip | |
reduce `Box::default` stack copies in debug mode
The `Box::new(T::default())` implementation of `Box::default` only had two stack copies in debug mode, compared to the current version, which has four. By avoiding creating any `MaybeUninit<T>`'s and just writing `T` directly to the `Box` pointer, the stack usage in debug mode remains the same as the old version.
Diffstat (limited to 'tests/codegen/box-default-debug-copies.rs')
| -rw-r--r-- | tests/codegen/box-default-debug-copies.rs | 5 | 
1 files changed, 4 insertions, 1 deletions
| diff --git a/tests/codegen/box-default-debug-copies.rs b/tests/codegen/box-default-debug-copies.rs index ed4e0c416b8..06cc41b21c0 100644 --- a/tests/codegen/box-default-debug-copies.rs +++ b/tests/codegen/box-default-debug-copies.rs @@ -5,6 +5,9 @@ // four `T` allocas. // // See https://github.com/rust-lang/rust/issues/136043 for more context. +// +// FIXME: This test only wants to ensure that there are at most two allocas of `T` created, instead +// of checking for exactly two. #![crate_type = "lib"] @@ -17,7 +20,7 @@ impl Default for Thing { } } -// CHECK-COUNT-4: %{{.*}} = alloca {{.*}}1000000 +// CHECK-COUNT-2: %{{.*}} = alloca {{.*}}1000000 // CHECK-NOT: %{{.*}} = alloca {{.*}}1000000 #[no_mangle] pub fn box_default_single_copy() -> Box<Thing> { | 
