Skip to content
Snippets Groups Projects
  • Quentin Colombet's avatar
    806d823f
    Reapply r259624, it is likely not the commit causing the bot failures. · 806d823f
    Quentin Colombet authored
    Original message:
    Make CF constant string decl visible to name lookup to fix module errors
    
    The return type of the __builtin___*StringMakeConstantString functions
    is a pointer to a struct, so we need that struct to be visible to name
    lookup so that we will correctly merge multiple declarations of that
    type if they come from different modules.
    
    Incidentally, to make this visible to name lookup we need to rename the
    type to __NSConstantString, since the real NSConstantString is an
    Objective-C interface type.  This shouldn't affect anyone outside the
    compiler since users of the constant string builtins cast the result
    immediately to CFStringRef.
    
    Since this struct type is otherwise implicitly created by the AST
    context and cannot access namelookup, we make this a predefined type
    and initialize it in Sema.
    
    Note: this issue of builtins that refer to types not visible to name
    lookup technically also affects other builtins (e.g. objc_msgSendSuper),
    but in all other cases the builtin is a library builtin and the issue
    goes away if you include the library that defines the types it uses,
    unlike for these constant string builtins.
    
    rdar://problem/24425801
    
    
    git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@259721 91177308-0d34-0410-b5e6-96231b3b80d8
    806d823f
    History
    Reapply r259624, it is likely not the commit causing the bot failures.
    Quentin Colombet authored
    Original message:
    Make CF constant string decl visible to name lookup to fix module errors
    
    The return type of the __builtin___*StringMakeConstantString functions
    is a pointer to a struct, so we need that struct to be visible to name
    lookup so that we will correctly merge multiple declarations of that
    type if they come from different modules.
    
    Incidentally, to make this visible to name lookup we need to rename the
    type to __NSConstantString, since the real NSConstantString is an
    Objective-C interface type.  This shouldn't affect anyone outside the
    compiler since users of the constant string builtins cast the result
    immediately to CFStringRef.
    
    Since this struct type is otherwise implicitly created by the AST
    context and cannot access namelookup, we make this a predefined type
    and initialize it in Sema.
    
    Note: this issue of builtins that refer to types not visible to name
    lookup technically also affects other builtins (e.g. objc_msgSendSuper),
    but in all other cases the builtin is a library builtin and the issue
    goes away if you include the library that defines the types it uses,
    unlike for these constant string builtins.
    
    rdar://problem/24425801
    
    
    git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@259721 91177308-0d34-0410-b5e6-96231b3b80d8
Code owners
Assign users and groups as approvers for specific file changes. Learn more.