[cfe-commits] r79041 - /cfe/trunk/lib/Sema/SemaDeclAttr.cpp

Ted Kremenek kremenek at apple.com
Fri Aug 14 15:30:59 PDT 2009


On Aug 14, 2009, at 3:30 PM, Chris Lattner wrote:

>
> On Aug 14, 2009, at 3:20 PM, Eli Friedman wrote:
>
>> On Fri, Aug 14, 2009 at 3:12 PM, Ted Kremenek<kremenek at apple.com>  
>> 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.


Yes, this was my thought exactly.  Unless it is part of the type, the  
attribute doesn't make sense for function pointers.
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.llvm.org/pipermail/cfe-commits/attachments/20090814/ecd3e47a/attachment.html>


More information about the cfe-commits mailing list