summaryrefslogtreecommitdiffstats
path: root/clang/lib/CodeGen/Mangle.cpp
diff options
context:
space:
mode:
authorChris Lattner <sabre@nondot.org>2010-06-23 06:00:24 +0000
committerChris Lattner <sabre@nondot.org>2010-06-23 06:00:24 +0000
commit37141f4fb4ac93cee02ead6bae49539086d2629f (patch)
tree8823447a65934f464cda11172b9048e57c12f761 /clang/lib/CodeGen/Mangle.cpp
parentb48a2d5d2fb71df0ff5cbfc33d0879da19ead9f4 (diff)
downloadbcm5719-llvm-37141f4fb4ac93cee02ead6bae49539086d2629f.tar.gz
bcm5719-llvm-37141f4fb4ac93cee02ead6bae49539086d2629f.zip
improve altivec vector bool/pixel support, patch by Anton Yartsev
with several tweaks by me. llvm-svn: 106619
Diffstat (limited to 'clang/lib/CodeGen/Mangle.cpp')
-rw-r--r--clang/lib/CodeGen/Mangle.cpp16
1 files changed, 12 insertions, 4 deletions
diff --git a/clang/lib/CodeGen/Mangle.cpp b/clang/lib/CodeGen/Mangle.cpp
index e1e2f1069b7..01838f98d45 100644
--- a/clang/lib/CodeGen/Mangle.cpp
+++ b/clang/lib/CodeGen/Mangle.cpp
@@ -1322,12 +1322,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>
+// <type> ::= <vector-type>
+// <vector-type> ::= Dv <positive dimension number> _
+// <extended element type>
+// ::= Dv [<dimension expression>] _ <element type>
+// <extended element type> ::= <element type>
+// ::= p # AltiVec vector pixel
void CXXNameMangler::mangleType(const VectorType *T) {
Out << "Dv" << T->getNumElements() << '_';
- mangleType(T->getElementType());
+ if (T->getAltiVecSpecific() == VectorType::Pixel)
+ Out << 'p';
+ else if (T->getAltiVecSpecific() == VectorType::Bool)
+ Out << 'b';
+ else
+ mangleType(T->getElementType());
}
void CXXNameMangler::mangleType(const ExtVectorType *T) {
mangleType(static_cast<const VectorType*>(T));
OpenPOWER on IntegriCloud