https://gcc.gnu.org/bugzilla/show_bug.cgi?id=56955

--- Comment #8 from Paul Eggert <eggert at gnu dot org> ---
Comment on attachment 32831
  --> https://gcc.gnu.org/bugzilla/attachment.cgi?id=32831
Clarify documentation for __attribute__ ((malloc)).

>Index: gcc/ChangeLog
>===================================================================
>--- gcc/ChangeLog      (revision 210629)
>+++ gcc/ChangeLog      (working copy)
>@@ -1,3 +1,10 @@
>+2014-05-20  Paul Eggert  <egg...@cs.ucla.edu>
>+
>+      PR other/56955
>+      * doc/extend.texi (Function Attributes): Fix  __attribute__ ((malloc))
>+      documentation; the old documentation didn't clearly state the
>+      constraints on the contents of the pointed-to storage.
>+
> 2014-05-19  David Wohlferd <d...@limegreensocks.com>
> 
>       * doc/extend.texi: Create Label Attributes section,
>Index: gcc/doc/extend.texi
>===================================================================
>--- gcc/doc/extend.texi        (revision 210629)
>+++ gcc/doc/extend.texi        (working copy)
>@@ -3207,15 +3207,20 @@
> 
> @item malloc
> @cindex @code{malloc} attribute
>-The @code{malloc} attribute is used to tell the compiler that a function
>-may be treated as if any non-@code{NULL} pointer it returns cannot
>-alias any other pointer valid when the function returns and that the memory
>-has undefined content.
>-This often improves optimization.
>-Standard functions with this property include @code{malloc} and
>-@code{calloc}.  @code{realloc}-like functions do not have this
>-property as the memory pointed to does not have undefined content.
>+This tells the compiler that a function is @code{malloc}-like, i.e.,
>+that if the function returns a non-null pointer @var{P}, then @var{P}
>+cannot alias any other pointer valid when the function returns, and
>+moreover the contents of any storage addressed by @var{P} cannot
>+contain a pointer that aliases any other pointer valid when the
>+function returns.
> 
>+Ussing this attribute often improves optimization.  Functions like
>+@code{malloc} and @code{calloc} have this property because they return
>+a pointer to uninitialized or zeroed-out storage.  However, functions
>+like @code{realloc} do not have this property, as they can return a
>+pointer to storage containing pointers that alias already-valid
>+pointers.
>+
> @item mips16/nomips16
> @cindex @code{mips16} attribute
> @cindex @code{nomips16} attribute

Reply via email to