[RFC PATCH] Add alloc_size attribute to the default operator new and operator new[] (take 2)

Jason Merrill jason@redhat.com
Wed Aug 3 19:53:00 GMT 2011


On 08/03/2011 02:26 PM, Jakub Jelinek wrote:
> As for the properties which the middle-end would like to assume or not
> from the operator new/operator new[]:
> 1) for alloc_size it is whether the returned pointer has exactly the
> requested bytes defined, i.e. can't return a buffer where only fewer bytes
> are valid and it is invalid to access bytes beyond those that were requested

"If it is successful, it shall return the address of the start of a 
block of storage whose length in bytes shall be at least as large as
the requested size."

I suppose this leaves room for a user operator new to allocate some 
extra space at the end and other code to take advantage of that, though 
I would be surprised if anyone actually did that.

> 2) aliasing - is the returned buffer guaranteed not to alias any other
> object the program may validly access?

Not currently.

> 3) side-effects - currently for malloc we assume it has no visible
> side-effects other than allocating the memory (i.e. malloc internals are
> treated as black box), I guess for user supplied operator new/operator
> new[] we shouldn't assume it doesn't have other side-effects (thus e.g. we
> shouldn't optimize it away, etc.)

We have no guarantees about what side-effects a user-supplied operator 
new might have.

Jason



More information about the Gcc-patches mailing list