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

Evgeniy Stepanov via cfe-commits cfe-commits at lists.llvm.org
Wed Oct 14 16:55:14 PDT 2015


eugenis added a comment.

I've wrote down my understanding of the problem in ABIVersioning.rst.
AFAIK, Howard added the attribute so he might know more about it.

Why does windows need this attributes in the unstable abi build?

Hidden visibility and always_inline work together for the same goal, so I'm removing them both. Keeping hidden visibility but removing always inline would break things because user code will expect external definitions for class members that would not be there.

Other approaches don't work for class members. AFAIK, there is no way in C++ to declare a class member function to have an internal linkage. In C this is done with the "static" keywords, but C++ went ahead an redefined it to mean something completely different.

One idea that we had for this was to introduce a __attribute__((internal_linkage)) and use it in place of always_inline with the supporting compiler.

I remeasured the test suite speed up on a different, faster machine and it is just 10%. Still quite a lot.


Repository:
  rL LLVM

http://reviews.llvm.org/D13713





More information about the cfe-commits mailing list