diff options
author | Nick Lewycky <nicholas@mxc.ca> | 2010-03-26 07:18:04 +0000 |
---|---|---|
committer | Nick Lewycky <nicholas@mxc.ca> | 2010-03-26 07:18:04 +0000 |
commit | 3cfe6af8b5bcf36395edc637c1391bd59729fd0f (patch) | |
tree | 21d36f76a76cf0f8919e0d0b31a1a7345afb6b7a /clang/lib/CodeGen/Mangle.cpp | |
parent | f956b35f98910fd26a2fe62a34f62d885b904c0d (diff) | |
download | bcm5719-llvm-3cfe6af8b5bcf36395edc637c1391bd59729fd0f.tar.gz bcm5719-llvm-3cfe6af8b5bcf36395edc637c1391bd59729fd0f.zip |
Implement new mangling for vectors.
llvm-svn: 99616
Diffstat (limited to 'clang/lib/CodeGen/Mangle.cpp')
-rw-r--r-- | clang/lib/CodeGen/Mangle.cpp | 9 |
1 files changed, 7 insertions, 2 deletions
diff --git a/clang/lib/CodeGen/Mangle.cpp b/clang/lib/CodeGen/Mangle.cpp index d7ebda5e5f0..37052a54622 100644 --- a/clang/lib/CodeGen/Mangle.cpp +++ b/clang/lib/CodeGen/Mangle.cpp @@ -1136,15 +1136,20 @@ void CXXNameMangler::mangleType(const ComplexType *T) { } // GNU extension: vector types +// <type> ::= <vector-type> +// <vector-type> ::= Dv <positive dimension number> _ <element type> +// ::= Dv [<dimension expression>] _ <element type> 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<const VectorType*>(T)); } void CXXNameMangler::mangleType(const DependentSizedExtVectorType *T) { - Out << "U8__vector"; + Out << "Dv"; + mangleExpression(T->getSizeExpr()); + Out << '_'; mangleType(T->getElementType()); } |