[PATCH] D13713: [libc++] Stop marking interface symbols always_inline + hidden when building for unstable ABI

Eric Fiselier via cfe-commits cfe-commits at lists.llvm.org
Wed Oct 14 00:03:04 PDT 2015


EricWF added a comment.

- I would love to have some documentation in libc++ about always-inline, the ABI problem it is trying to solve, and how it falls short. Because you tried to fix these semantics in clang would you be willing to write up a short summary of when always-inline does and doesn't work.
- If this is about always-inline semantics why are we turning off the hidden-visibility part of the macro?
- Can you offer other approaches for hiding internal symbols such as helper functions.? For example

  inline _LIBCPP_INLINE_VISIBILITY __foo_impl(); // current way.
  static inline _LIBCPP_HIDDEN __foo_impl(); // better way?
  namespace { inline __foo_impl(); } // a (probably bad) possibility



- The test suite speedup is amazing. Is it possible to safely remove the `__always_inline__` attribute from functions in the stable ABI configuration?

It seems like always-inline semantics can hurt our users in debug builds and we would benefit from drastically reducing its usage. However I need to understand exactly what `__always_inline__` buys us in ABI stability before I can make an informed decision on changing its usage.


Repository:
  rL LLVM

http://reviews.llvm.org/D13713





More information about the cfe-commits mailing list