[libcxx-commits] [libcxx] [libc++] Fix ABI tag mismatches during C++20 module deserialization (PR #213495)

Damian Höster via libcxx-commits libcxx-commits at lists.llvm.org
Tue Aug 4 12:03:56 PDT 2026


================
@@ -88,7 +88,8 @@ _LIBCPP_END_EXPLICIT_ABI_ANNOTATIONS
 
 #    if _LIBCPP_HAS_UNICODE
 template <class = void> // TODO PRINT template or availability markup fires too eagerly (http://llvm.org/PR61563).
-_LIBCPP_HIDE_FROM_ABI void __vprint_unicode(ostream& __os, string_view __fmt, format_args __args, bool __write_nl) {
+_LIBCPP_HIDE_FROM_ABI inline void
----------------
damster101 wrote:

Yes, "inline linkage" is not a thing, I meant external linkage with ODR exemption gained from implicit inline. Which is how `__vprint_unicode` is treated in case of header include, while in case of module import you get no implicit inline and module linkage.
Explicit inline overrides both default context rules and makes the linkage and symbol generation identical regardless.

https://github.com/llvm/llvm-project/pull/213495


More information about the libcxx-commits mailing list