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