From: Anders Carlsson Date: Thu, 9 Apr 2009 21:55:45 +0000 (+0000) Subject: Add @encode support for complex types. X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=c612f7bc9a6379cd7e7c2dd306d05938e890051b;p=clang Add @encode support for complex types. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@68729 91177308-0d34-0410-b5e6-96231b3b80d8 --- 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); +