[cfe-dev] libc++ and large stack frames
Erik van der Poel via cfe-dev
cfe-dev at lists.llvm.org
Thu May 31 13:07:06 PDT 2018
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.
Alternatives considered and rejected:
1. Remove __attribute__((__always_inline__)) from all include/__config
macros.
2. Add _LIBCPP_DISABLE_ALWAYS_INLINE to control whether or not
__always_inline__ is included in any __config macro.
3. Use the existing _LIBCPP_DISABLE_VISIBILITY_ANNOTATIONS to control both
__visibility__ and __always_inline__.
4. Use the existing _LIBCPP_ABI_UNSTABLE to control
_LIBCPP_INLINE_VISIBILITY.
Further background reading:
The two macros were made identical in the following commit, an effort to
reduce the number of exported symbols (Dec 17, 2010):
https://github.com/llvm-mirror/libcxx/commit/2d72b1e393e35d61917d6d0ce069482ab11e96d1
Brief documentation about these macros was added later (Sep 15, 2016):
https://github.com/llvm-mirror/libcxx/commit/833d644ed1c04346d665193d1b3eac5e3ae68193
The macros were discussed here before:
http://lists.llvm.org/pipermail/cfe-dev/2015-December/046436.html
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.llvm.org/pipermail/cfe-dev/attachments/20180531/8c1c436d/attachment.html>
More information about the cfe-dev
mailing list