malloc cannot alias preexisting pointers

Martin Sebor msebor@gmail.com
Mon May 13 17:19:00 GMT 2019


On 5/13/19 10:49 AM, Jakub Jelinek wrote:
> 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)?

Realloc doesn't have the malloc attribute.

Martin



More information about the Gcc-patches mailing list