On Fri, Aug 14, 2009 at 3:30 PM, Chris Lattner<[email protected]> wrote:
>
> On Aug 14, 2009, at 3:20 PM, Eli Friedman wrote:
>
>> On Fri, Aug 14, 2009 at 3:12 PM, Ted Kremenek<[email protected]> wrote:
>>>
>>> Unless I'm mistaken, this breaks constructs like the following:
>>> __attribute((malloc)) void *(*f)();
>>>
>>> -Eli
>>>
>>> I implemented handling of this case, but I noticed that GCC actually
>>> rejects
>>> attribute 'malloc' being applied to function pointers ("warning: 'malloc'
>>> attribute ignored").  Should we do the same in Clang?  For function
>>> pointers, the malloc attribute really a property of the pointer type, not
>>> the declaration, but apparently GCC doesn't even reason about that.
>>
>> I think it's better to be self-consistent here over being consistent
>> with gcc, as long as we don't break compatibility.  Function
>> attributes are confusing enough without making different attributes
>> act differently.
>
> The problem is that this attribute is really a decl attribute, not a type
> attribute.  If I have two functions with the same prototype (but one is
> attribute malloc) I should be able to assign them to the same function
> pointer, no?  If we made it part of the type system, we'd have to consider
> the attribute for assignment compatibility etc.

How is malloc different from noreturn in this regard?

-Eli

_______________________________________________
cfe-commits mailing list
[email protected]
http://lists.cs.uiuc.edu/mailman/listinfo/cfe-commits

Reply via email to