[cfe-dev] [libc++abi] demangle fails to handle SSE2 types
Luc Bourhis
luc_j_bourhis at mac.com
Wed May 23 08:12:53 PDT 2012
On 23 May 2012, at 16:01, Howard Hinnant wrote:
> It does include a mangling for vendor extended types, and it is a shame that the ABI hasn't been followed for these types (prefix with 'u'), but oh well.
For the record, g++ follows that ABI. The demangling is unfortunately not symmetric, at least for g++ 4.6:
Type: __m64
Mangled: U8__vectori
Demangled: int __vector
Type: __m128
Mangled: U8__vectorf
Demangled: float __vector
Type: __m128d
Mangled: U8__vectord
Demangled: double __vector
Type: __m128i
Mangled: U8__vectorx
Demangled: long long __vector
I mention that because it can become annoying in the context of C++ programs generating C++ code (an exercise I indulge into on a regular basis): it would be nice if clang/libc++abi keeps it symmetric.
> If you'll tell me what string you would like to see these symbols demangle to, I'll put it on my to-do list.
Thanks! Here you are:
Type: __m64
Mangled: Dv1_x
Type: __m128
Mangled: Dv4_f
Type: __m128d
Mangled: Dv2_d
Type: __m128i
Mangled: Dv2_x
Type: __m256
Mangled: Dv8_f
Type: __m256d
Mangled: Dv4_d
Type: __m256i
Mangled: Dv4_x
The last 3 types are actually AVX types, a technology only available on Sandy Bridge platforms, and I had to run clang on a Linux machine because I don't have access to a Mac with those processors, but it should not matter as far as you are concerned.
Best wishes,
Luc Bourhis
More information about the cfe-dev
mailing list