[cfe-dev] clang builtin function attributes

Richard Smith via cfe-dev cfe-dev at lists.llvm.org
Tue Apr 5 12:02:09 PDT 2016

Clang does support it, under the same name, but it looks like we don't
apply it to any builtin functions (yet). It seems appropriate for the is*
and to* functions (if there are functions rather than macros) to be const
rather than just pure, though, as they do not access memory that is visible
to the caller.

On Tue, Apr 5, 2016 at 11:56 AM, Taewook Oh via cfe-dev <
cfe-dev at lists.llvm.org> wrote:

> Thank you for your reply. I wonder if clang does not support "pure"
> attribute at all, or has a different name for it.
> Thanks,
> Taewook
> From: <metafoo at gmail.com> on behalf of Richard Smith <
> richard at metafoo.co.uk>
> Date: Tuesday, April 5, 2016 at 11:48 AM
> To: Taewook Oh <twoh at fb.com>
> Cc: via cfe-dev <cfe-dev at lists.llvm.org>
> Subject: Re: [cfe-dev] clang builtin function attributes
> On Tue, Apr 5, 2016 at 11:28 AM, Taewook Oh via cfe-dev <
> cfe-dev at lists.llvm.org> wrote:
>> Hello,
>> Unlike gcc, clang does not provide builtin functions for functions in
>> ctype.h, such as tolower. To generated better optimized code, I'm planning
>> to add these functions as builtins with attributes. Regarding this, I have
>> a few questions:
>>    1. In "Attributes in Clang" page (
>>    http://clang.llvm.org/docs/AttributeReference.html
>>    <https://urldefense.proofpoint.com/v2/url?u=http-3A__clang.llvm.org_docs_AttributeReference.html&d=CwMFaQ&c=5VD0RTtNlTh3ycd41b3MUw&r=kOsLCgQzH7N8ptZ7diJD9g&m=Q2Jov6ZReuDh4daoAqk_HH2uEZ3C0Cg4ZSEOO63immU&s=vAgJMXrR_WQXR4r2P0R6gFK9E5X6s94A6CfBHEaOhOI&e=>),
>>    "nothrow" and "const" are not in the list while they are still used in
>>    Builtins.def. Are these attributes deprecated?
>> No, they're just not documented yet. (We'd appreciate patches to
> include/clang/AttrDocs.td and include/clang/Attr.td if you're feeling
> enthusiastic, but note that this needs to be original documentation -- it
> wouldn't be acceptable to copy documentation from GCC due to license
> differences.)
>>    1. (Assuming they are not deprecated) Is there a place that I can
>>    find definitions for attributes used in builtins.def? In particular, I
>>    wonder if "const" attributes of clang has same meaning with gcc's "const"
>>    attribute, as it seems that clang does not support "pure" attribute.
>> Yes, the attributes listed in clang's Builtins.def are the
> __attribute__((X)) form, which generally mean the same thing to Clang as
> they do to GCC (with rare exceptions).
> _______________________________________________
> cfe-dev mailing list
> cfe-dev at lists.llvm.org
> http://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-dev
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.llvm.org/pipermail/cfe-dev/attachments/20160405/cd3e2b5d/attachment.html>

More information about the cfe-dev mailing list