summaryrefslogtreecommitdiffstats
path: root/clang/lib/CodeGen/Mangle.cpp
diff options
context:
space:
mode:
authorNick Lewycky <nicholas@mxc.ca>2010-03-26 07:18:04 +0000
committerNick Lewycky <nicholas@mxc.ca>2010-03-26 07:18:04 +0000
commit3cfe6af8b5bcf36395edc637c1391bd59729fd0f (patch)
tree21d36f76a76cf0f8919e0d0b31a1a7345afb6b7a /clang/lib/CodeGen/Mangle.cpp
parentf956b35f98910fd26a2fe62a34f62d885b904c0d (diff)
downloadbcm5719-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.cpp9
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());
}
OpenPOWER on IntegriCloud