On 01/10/2018 10:04 PM, Prathamesh Kulkarni wrote:
> On 11 January 2018 at 04:50, Jeff Law <l...@redhat.com> wrote:
>> On 01/09/2018 05:57 AM, Prathamesh Kulkarni wrote:
>>>
>>> As Jakub pointed out for the case:
>>> void *f()
>>> {
>>>   return __builtin_malloc (0);
>>> }
>>>
>>> The malloc propagation would set f() to malloc.
>>> However AFAIU, malloc(0) returns NULL (?) and the function shouldn't
>>> be marked as malloc ?
>> This seems like a pretty significant concern.   Given:
>>
>>
>>  return  n ? 0 : __builtin_malloc (n);
>>
>> Is the function malloc-like enough to allow it to be marked?
>>
>> If not, then ISTM we have to be very conservative in what we mark.
>>
>> foo (n, m)
>> {
>>   return n ? 0 : __builtin_malloc (m);
>> }
>>
>> Is that malloc-like enough to mark?
> Not sure. Should I make it more conservative by marking it as malloc
> only if the argument to __builtin_malloc
> is constant or it's value-range is known not to include 0? And
> similarly for __builtin_calloc ?
It looks like the consensus is we don't need to worry about the cases
above.  So unless Jakub chimes in with a solid reason, don't worry about
them.

Jeff

Reply via email to