plotfi added a comment.

In D86049#3814111 <https://reviews.llvm.org/D86049#3814111>, @ahatanak wrote:

> In D86049#3812412 <https://reviews.llvm.org/D86049#3812412>, @plotfi wrote:
>
>> In D86049#3812068 <https://reviews.llvm.org/D86049#3812068>, @ahatanak wrote:
>>
>>> In D86049#3806898 <https://reviews.llvm.org/D86049#3806898>, @plotfi wrote:
>>>
>>>> 1. Do we change the existing visibility behavior of objc methods? Yes / No
>>>
>>> I don't think we want to change the existing visibility behavior of 
>>> non-direct objc methods. Is there a use reason or use case for making them 
>>> visible outside the linkage unit?
>>>
>>>> 2. If we leave hidden as the default do we change the behavior for 
>>>> objc_direct? Yes / No
>>>
>>> I think direct methods shouldn't be hidden by default (i.e., they should 
>>> get the default visibility). But it's not clear to me whether we should 
>>> make that change right away as I've heard concerns from people internally. 
>>> I think I need more time to understand what exactly their concerns are.
>>>
>>>> 3. If we leave objc_direct as hidden by default do we expand the existing 
>>>> objc_direct attr to have the enum as you said so 
>>>> `__attribute__((objc_direct("visible")))` or do we add a new attr as I 
>>>> have done so far?
>>>
>>> I wasn't sure why it wasn't possible to use the existing 
>>> `__attribute__((visibility("default")))` attribute. Is it not possible to 
>>> make only the direct methods get the default visibility?
>>
>> This is not possible because default visibility is implicit (as far as I 
>> understand). It can not be checked if  
>> `__attribute__((visibility("default")))` is set because it is always set 
>> unless -fvisibility=hidden is passed on the command line. So either we treat 
>> direct methods like everything else, and hide them when  
>> `__attribute__((visibility("hidden")))` or the command line to hide 
>> everything by default is used, or we need a new attr or a new enum on the 
>> existing objc_direct attr.
>>
>> Does this make sense or am I missing some details?
>
> But there are ways to check whether the user explicitly added a visibility 
> attribute (e.g., `__attribute__((visibility("default")))`), right?  For 
> example, `NamedDecl::getExplicitVisibility`.
>
> I'm just not sure whether we want to add support for a new attribute like 
> `__attribute__((objc_direct("default")))` since it seems equivalent to 
> `__attribute__((objc_direct, visibility("default")))`.

Ah, thank you Akira. I had tried to explicitly check for this in some ways but 
not through `NamedDecl::getExplicitVisibility`. I will give this a try and if 
this works I think we can move forward.

Thanks Again

Puyan


Repository:
  rG LLVM Github Monorepo

CHANGES SINCE LAST ACTION
  https://reviews.llvm.org/D86049/new/

https://reviews.llvm.org/D86049

_______________________________________________
cfe-commits mailing list
cfe-commits@lists.llvm.org
https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits

Reply via email to