[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