ahatanak added a comment. 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")))`. 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