kikairoya wrote: > Why does the non-Windows case not set visibility for the definition?
This is the existing behavior. https://github.com/llvm/llvm-project/commit/b735c66da9c9ae752b88941d466895a0b696c75e > This changes semantics meaningfully: the template is no longer external and > thus will be instantiated everywhere and require COMDAT semantics. Is this > intentional? For `Registry<T>` itself, yes. To catch a missing explicit instantiation declaration, we need to hide the definition, or to avoid requirement of the declaration, i.e., instantiate implicitly. > Does it have measured perf implications that we should consider? I haven't measured, however, accessing `Registry<T>` shouldn't be in a hot-path, so I think there is no major impact. For build-time, `Registry<T>` itself is a quite simple template, and I don't think so many TUs instantiate it with the same parameters, so I guess it's not significant. https://github.com/llvm/llvm-project/pull/185141 _______________________________________________ cfe-commits mailing list [email protected] https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits
