[libcxx-dev] Option to disable inline namespacing completely?

Kristina Brooks via libcxx-dev libcxx-dev at lists.llvm.org
Thu Nov 15 17:10:20 PST 2018


Yes changing this on IA64 mangler level would make more sense and leave room for compact mangling
for versioned ABI though I think I may need to pitch an RFC to the C++ committee or whoever is in
charge of the C++ IA64 ABI.

Thanks.

On 16/11/2018 01:06, JF Bastien wrote:
> 
> 
>> On Nov 15, 2018, at 3:59 PM, Kristina Brooks via libcxx-dev <libcxx-dev at lists.llvm.org> wrote:
>>
>> Yes exactly, seems like an obvious win on a mono-ABI system, if preserving debug data
>> this saves a lot, not to mention symbol table strings. Also, I'm purely speculating here
>> but this would also speed up compilation and linking time by an insignificant margin, but
>> nevertheless, it's an improvement.
>>
>> If the ABI ever needs to change, on those kinds of systems, it's easy enough with an OS
>> update.
> 
> Or, we could update the Itanium ABI so that the current mangling still works and is compatible with a new mangling which is shorter for libc++ (yet remains purposefully incompatible with libstdc++’s mangling) 🙂
> 
> 
>> Thanks.
>>
>> On 14/11/2018 17:06, Eric Fiselier wrote:
>>>
>>>
>>> On Wed, Nov 14, 2018 at 12:04 PM Eric Fiselier <eric at efcs.ca <mailto:eric at efcs.ca>> wrote:
>>>
>>>    The itanium specification provides special compressed mangled names for std::string when it's not in an inline
>>>    namespace [1]
>>>
>>>    Specifically, `Ss` vs `St3__112basic_string`
>>>
>>>
>>> Correction... `Ss` vs `NSt3__112basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEEE`
>>>  
>>>
>>>
>>>    [1] https://itanium-cxx-abi.github.io/cxx-abi/abi.html#mangling-compression
>>>
>>>    On Wed, Nov 14, 2018 at 10:03 AM Marshall Clow via libcxx-dev <libcxx-dev at lists.llvm.org
>>>    <mailto:libcxx-dev at lists.llvm.org>> wrote:
>>>
>>>        On Sun, Nov 11, 2018 at 9:49 PM Kristina Brooks via libcxx-dev <libcxx-dev at lists.llvm.org
>>>        <mailto:libcxx-dev at lists.llvm.org>> wrote:
>>>
>>>            Hi,
>>>
>>>            I was wondering, would it be possible to add an option to disable inline namespacing completely (as a CMake
>>>            configuration flag) in libc++ for the sake of being able to use shorthand mangling and without having to
>>>            resort to
>>>            handling it on IA64 mangler level. This has many use cases for example distributions of anything that
>>>            includes libc++ as
>>>            one and only libc++ and does not allow non-vendor software to be installed. On an embedded system, assuming
>>>            debug info
>>>            is generated, and given how common some of the debug data takes a very significant amount of space given the
>>>            complex
>>>            definition of something like `std::__2::basic_string<...>` versus the short form (`std::string` having a
>>>            shorthand
>>>            mangling is a godsend since it's 95% shorter, not an accurate figure but basically definitely above 90%).
>>>
>>>
>>>        I'm confused here.
>>>        Why are you comparing `std::string` to `std::__2::basic_string<......" ?
>>>
>>>        `std::__2::string` is quite short.<http://lists.llvm.org/cgi-bin/mailman/listinfo/libcxx-dev>
>>>
>>>        -- Marshall
>>>
>>>        _______________________________________________
>>>        libcxx-dev mailing list
>>>        libcxx-dev at lists.llvm.org <mailto:libcxx-dev at lists.llvm.org>
>>>        http://lists.llvm.org/cgi-bin/mailman/listinfo/libcxx-dev
>>>
>> _______________________________________________
>> libcxx-dev mailing list
>> libcxx-dev at lists.llvm.org
>> http://lists.llvm.org/cgi-bin/mailman/listinfo/libcxx-dev
> 


More information about the libcxx-dev mailing list