[llvm-dev] Question about __NSConstantString and __NSConstantString_tag

Ben Langmuir via llvm-dev llvm-dev at lists.llvm.org
Fri Feb 19 07:35:11 PST 2016

> On Feb 19, 2016, at 7:16 AM, Brad King <brad.king at kitware.com> wrote:
> On 02/18/2016 05:51 PM, Michka Popoff wrote:
>> Our problem is that the AST contains some declarations which were not there before.
> [snip]
>> __NSConstantString and __NSConstantString_tag are now exposed.
> [snip]
>> Maybe someone could enlighten us about this change.
>> If it’s not a bug, we would like to know more about these structures.

This struct/typedef are for __builtin___CFStringMakeConstantString (and the NS variant) and are predefined to make these builtins behave correctly with modules.  Adding them was intentional :-)

> To clarify, this is not so much about the appearance of new builtins
> but that the structure has fields with no name.  Other builtin
> structures like __va_list_tag have names on their fields.  FieldDecl
> derives (indirectly) from NamedDecl.
> Our concern is that AST processing tools expect to find a name on
> fields, and the changes in question introduced fields without names.
> Can they be given names, if only for AST consistency?

Yes, sounds like a good idea. I’ll take a look at this later today.

> Thanks,
> -Brad

More information about the llvm-dev mailing list