<div dir="ltr"><div dir="ltr"><br><br><div class="gmail_quote"><div dir="ltr">On Wed, Nov 14, 2018 at 12:04 PM Eric Fiselier <<a href="mailto:eric@efcs.ca">eric@efcs.ca</a>> wrote:<br></div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex"><div dir="ltr"><div dir="ltr">The itanium specification provides special compressed mangled names for std::string when it's not in an inline namespace [1]<div><br></div><div>Specifically, `Ss` vs `St3__112basic_string`</div></div></div></blockquote><div><br></div><div>Correction... `Ss` vs `NSt3__112basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEEE`</div><div> </div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex"><div dir="ltr"><div dir="ltr"><div><br></div><div>[1] <a href="https://itanium-cxx-abi.github.io/cxx-abi/abi.html#mangling-compression" target="_blank">https://itanium-cxx-abi.github.io/cxx-abi/abi.html#mangling-compression</a></div></div></div><br><div class="gmail_quote"><div dir="ltr">On Wed, Nov 14, 2018 at 10:03 AM Marshall Clow via libcxx-dev <<a href="mailto:libcxx-dev@lists.llvm.org" target="_blank">libcxx-dev@lists.llvm.org</a>> wrote:<br></div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex"><div dir="ltr"><div class="gmail_quote"><div dir="ltr">On Sun, Nov 11, 2018 at 9:49 PM Kristina Brooks via libcxx-dev <<a href="mailto:libcxx-dev@lists.llvm.org" target="_blank">libcxx-dev@lists.llvm.org</a>> wrote:<br></div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex">Hi,<br>
<br>
I was wondering, would it be possible to add an option to disable inline namespacing completely (as a CMake<br>
configuration flag) in libc++ for the sake of being able to use shorthand mangling and without having to resort to<br>
handling it on IA64 mangler level. This has many use cases for example distributions of anything that includes libc++ as<br>
one and only libc++ and does not allow non-vendor software to be installed. On an embedded system, assuming debug info<br>
is generated, and given how common some of the debug data takes a very significant amount of space given the complex<br>
definition of something like `std::__2::basic_string<...>` versus the short form (`std::string` having a shorthand<br>
mangling is a godsend since it's 95% shorter, not an accurate figure but basically definitely above 90%).<br></blockquote><div><br></div><div>I'm confused here.</div><div>Why are you comparing `std::string` to `std::__2::basic_string<......" ?<br></div><div><br></div><div>`std::__2::string` is quite short.<a href="http://lists.llvm.org/cgi-bin/mailman/listinfo/libcxx-dev" rel="noreferrer" target="_blank"></a><br>
</div><div><br></div><div>-- Marshall</div><div><br></div></div></div>
_______________________________________________<br>
libcxx-dev mailing list<br>
<a href="mailto:libcxx-dev@lists.llvm.org" target="_blank">libcxx-dev@lists.llvm.org</a><br>
<a href="http://lists.llvm.org/cgi-bin/mailman/listinfo/libcxx-dev" rel="noreferrer" target="_blank">http://lists.llvm.org/cgi-bin/mailman/listinfo/libcxx-dev</a><br>
</blockquote></div>
</blockquote></div></div></div>