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

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


(It seems putting the mailing list in the CC field made it not go through so resending)

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