Skip to content

Commit efcd8a9

Browse files
committed
DIrect invocations of AllocRef::alloc cannot get optimized away
1 parent fba17e3 commit efcd8a9

File tree

1 file changed

+0
-21
lines changed

1 file changed

+0
-21
lines changed

library/core/src/alloc/mod.rs

-21
Original file line numberDiff line numberDiff line change
@@ -94,27 +94,6 @@ pub unsafe trait AllocRef {
9494
/// The returned block may have a larger size than specified by `layout.size()`, and may or may
9595
/// not have its contents initialized.
9696
///
97-
/// Note that you may not rely on this method actually getting called, even if there are calls
98-
/// to it in the source. The optimizer may detect unused allocations that it can either
99-
/// eliminate entirely or move to the stack and thus never invoke the allocator. The
100-
/// optimizer may further assume that allocation is infallible, so code that used to fail due
101-
/// to allocator failures may now suddenly work because the optimizer worked around the
102-
/// need for an allocation. More concretely, the following code example is unsound, irrespective
103-
/// of whether your custom allocator allows counting how many allocations have happened.
104-
///
105-
/// ```rust,ignore (unsound and has placeholders)
106-
/// Global::dealloc(Global::alloc(some_layout));
107-
/// let number_of_heap_allocs = /* call private allocator API */;
108-
/// unsafe { std::intrinsics::assume(number_of_heap_allocs > 0); }
109-
/// ```
110-
///
111-
/// Note that the optimizations mentioned above are not the only
112-
/// optimization that can be applied. You may generally not rely on heap allocations
113-
/// happening if they can be removed without changing program behavior.
114-
/// Whether allocations happen or not is not part of the program behavior, even if it
115-
/// could be detected via an allocator that tracks allocations by printing or otherwise
116-
/// having side effects.
117-
///
11897
/// # Errors
11998
///
12099
/// Returning `Err` indicates that either memory is exhausted or `layout` does not meet

0 commit comments

Comments
 (0)