On Mon, May 13, 2019 at 10:36:00AM -0600, Martin Sebor wrote:
> On 5/11/19 5:33 PM, Marc Glisse wrote:
> > Hello,
> >
> > this patch lets gcc know that if a pointer existed before the call to
> > malloc, the result of malloc cannot alias it. This is a bit ad hoc and
> > fragile. A small improvement would be, when the 2 statements are in the
> > same bb but in the wrong order, to check if there is any statement in
> > between that might prevent from reordering them. But that's more
> > complicated, and the patch as it is already does help.
>
> I.e., given the description of attribute malloc:
>
> the pointer P returned by the function cannot alias any other
> pointer valid when the function returns, and moreover no pointers
> to valid objects occur in any storage addressed by P.
>
> doesn't the same guarantee hold for other functions declared with
> the attribute (so that the same optimization could be applied to
> them as well)?
Doesn't realloc have also the malloc attribute, but the return value can
alias preexisting pointers (if no reallocation occurs, just the allocation
is extended)?
Jakub