[cfe-dev] libc++ and large stack frames

Duncan P. N. Exon Smith via cfe-dev cfe-dev at lists.llvm.org
Mon Jun 4 14:11:19 PDT 2018



> On Jun 4, 2018, at 13:52, Richard Smith <richard at metafoo.co.uk> wrote:
> 
> On Mon, 4 Jun 2018, 21:43 Duncan P. N. Exon Smith via cfe-dev, <cfe-dev at lists.llvm.org <mailto:cfe-dev at lists.llvm.org>> wrote:
> 
> 
>> On May 31, 2018, at 15:35, Richard Smith via cfe-dev <cfe-dev at lists.llvm.org <mailto:cfe-dev at lists.llvm.org>> wrote:
>> 
>> On 31 May 2018 at 14:38, Friedman, Eli via cfe-dev <cfe-dev at lists.llvm.org <mailto:cfe-dev at lists.llvm.org>> wrote:
>> On 5/31/2018 1:07 PM, Erik van der Poel via cfe-dev wrote:
>> This is a proposal to add a configuration option to disable _LIBCPP_INLINE_VISIBILITY, which causes large stack frames in non-optimized builds because it uses the always_inline attribute to force significant amounts of inlining of libc++ code.
>> 
>> The new configuration option could be called _LIBCPP_DISABLE_INLINE_VISIBILITY.
>> 
>> Note that _LIBCPP_INLINE_VISIBILITY and _LIBCPP_ALWAYS_INLINE have identical definitions. One could be renamed to the other or both could be renamed to _LIBCPP_HIDE_FROM_ABI as part of this work.
> 
> I think it's useful to have different names for these, since they have different intent.  It would be reasonable to change the definition of one without changing the other.
> 
> Renaming _LIBCPP_INLINE_VISIBILITY to _LIBCPP_HIDE_FROM_ABI makes sense to me though.
> 
> One option we'd like to investigate (but haven't yet) is changing _LIBCPP_INLINE_VISIBILITY/_LIBCPP_HIDE_FROM_ABI to drop the "always_inline" but keep the "hidden".  Have you considered _LIBCPP_DISABLE_ALWAYS_INLINE_IN_INLINE_VISIBILITY (or equivalent)?  If not, why not?
> 
> IIRC that results in missing definitions for all of the explicitly instantiated template members, because the versions in the DSO are not visible to their consumers.

It seems wrong to have any explicitly instantiated template members with _LIBCPP_INLINE_VISIBILITY.  Do we really do that?
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.llvm.org/pipermail/cfe-dev/attachments/20180604/5a742196/attachment.html>


More information about the cfe-dev mailing list