[llvm] LangRef: allocated objects can grow (PR #141338)

Nikita Popov via llvm-commits llvm-commits at lists.llvm.org
Sat May 24 06:55:58 PDT 2025


================
@@ -3327,6 +3327,15 @@ behavior is undefined:
 -  the size of all allocated objects must be non-negative and not exceed the
    largest signed integer that fits into the index type.
 
+Allocated objects that are created with operations recognized by LLVM (such as
+:ref:`alloca <i_alloca>`, heap allocation functions marked as such, and global
+variables) may *not* change their size. However, allocated objects can also be
+created by means not recognized by LLVM, e.g. by directly calling ``mmap``.
+Those allocated objects are allowed to grow to the right (i.e., keeping the same
+base address, but increasing their size), as long as they always satisfy the
+properties described above. Currently, allocated objects are not permitted to
+grow to the left or to shrink, nor can they have holes.
----------------
nikic wrote:

It occurred to me that it may be helpful to point out here that `realloc`-style operations do *not* grow the allocation the sense described here. They always create a new allocation with fresh provenance, even if it may have the same base address as the previous allocation.

https://github.com/llvm/llvm-project/pull/141338


More information about the llvm-commits mailing list