diff options
author | Anders Carlsson <andersca@mac.com> | 2009-04-09 21:55:45 +0000 |
---|---|---|
committer | Anders Carlsson <andersca@mac.com> | 2009-04-09 21:55:45 +0000 |
commit | c612f7bc9a6379cd7e7c2dd306d05938e890051b (patch) | |
tree | cba4f74e7a7fb8aeecf556cb1578242ea7212800 | |
parent | 6ab3524f72a6e64aa04973fa9433b5559abb3525 (diff) |
Add @encode support for complex types.
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@68729 91177308-0d34-0410-b5e6-96231b3b80d8
-rw-r--r-- | lib/AST/ASTContext.cpp | 7 | ||||
-rw-r--r-- | test/CodeGenObjC/encode-test-5.m | 11 |
2 files changed, 16 insertions, 2 deletions
diff --git a/lib/AST/ASTContext.cpp b/lib/AST/ASTContext.cpp index e976ccf967..deeb763191 100644 --- a/lib/AST/ASTContext.cpp +++ b/lib/AST/ASTContext.cpp @@ -2266,8 +2266,11 @@ void ASTContext::getObjCEncodingForTypeImpl(QualType T, std::string& S, S += encoding; } - } - else if (T->isObjCQualifiedIdType()) { + } else if (const ComplexType *CT = T->getAsComplexType()) { + S += 'j'; + getObjCEncodingForTypeImpl(CT->getElementType(), S, false, false, 0, false, + false); + } else if (T->isObjCQualifiedIdType()) { getObjCEncodingForTypeImpl(getObjCIdType(), S, ExpandPointedToStructures, ExpandStructures, FD); diff --git a/test/CodeGenObjC/encode-test-5.m b/test/CodeGenObjC/encode-test-5.m new file mode 100644 index 0000000000..970df3da87 --- /dev/null +++ b/test/CodeGenObjC/encode-test-5.m @@ -0,0 +1,11 @@ +// RUN: clang-cc -triple=i686-apple-darwin9 -fnext-runtime -emit-llvm -o %t %s && + +// RUN: grep ji %t | count 1 && +char *a = @encode(_Complex int); + +// RUN: grep jf %t | count 1 && +char *b = @encode(_Complex float); + +// RUN: grep jd %t | count 1 +char *c = @encode(_Complex double); + |