From: Nick Lewycky Date: Fri, 26 Mar 2010 07:18:04 +0000 (+0000) Subject: Implement new mangling for vectors. X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=0e5f067da58e43aa9bdfd1317283b52d4beeb19a;p=clang Implement new mangling for vectors. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@99616 91177308-0d34-0410-b5e6-96231b3b80d8 --- diff --git a/lib/CodeGen/Mangle.cpp b/lib/CodeGen/Mangle.cpp index d7ebda5e5f..37052a5462 100644 --- a/lib/CodeGen/Mangle.cpp +++ b/lib/CodeGen/Mangle.cpp @@ -1136,15 +1136,20 @@ void CXXNameMangler::mangleType(const ComplexType *T) { } // GNU extension: vector types +// ::= +// ::= Dv _ +// ::= Dv [] _ void CXXNameMangler::mangleType(const VectorType *T) { - Out << "U8__vector"; + Out << "Dv" << T->getNumElements() << '_'; mangleType(T->getElementType()); } void CXXNameMangler::mangleType(const ExtVectorType *T) { mangleType(static_cast(T)); } void CXXNameMangler::mangleType(const DependentSizedExtVectorType *T) { - Out << "U8__vector"; + Out << "Dv"; + mangleExpression(T->getSizeExpr()); + Out << '_'; mangleType(T->getElementType()); } diff --git a/test/CodeGen/mangle.c b/test/CodeGen/mangle.c index a087b42ad2..93d424a85d 100644 --- a/test/CodeGen/mangle.c +++ b/test/CodeGen/mangle.c @@ -59,3 +59,7 @@ extern int func (void) __asm__ ("FUNC"); int func(void) { return 42; } + +// CHECK: @_Z4foo9Dv4_f +typedef __attribute__(( vector_size(16) )) float float4; +void __attribute__((__overloadable__)) foo9(float4 f) {}