diff options
author | Chris Lattner <sabre@nondot.org> | 2010-06-23 06:00:24 +0000 |
---|---|---|
committer | Chris Lattner <sabre@nondot.org> | 2010-06-23 06:00:24 +0000 |
commit | 37141f4fb4ac93cee02ead6bae49539086d2629f (patch) | |
tree | 8823447a65934f464cda11172b9048e57c12f761 /clang/lib/CodeGen/Mangle.cpp | |
parent | b48a2d5d2fb71df0ff5cbfc33d0879da19ead9f4 (diff) | |
download | bcm5719-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.cpp | 16 |
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)); |