]> granicus.if.org Git - clang/commitdiff
For the purpose of @encode'ing, accept 'void' type
authorFariborz Jahanian <fjahanian@apple.com>
Thu, 16 Jun 2011 22:34:44 +0000 (22:34 +0000)
committerFariborz Jahanian <fjahanian@apple.com>
Thu, 16 Jun 2011 22:34:44 +0000 (22:34 +0000)
(even though it is incomplete type) because gcc
says so. // rdar://9622422

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@133208 91177308-0d34-0410-b5e6-96231b3b80d8

lib/Sema/SemaExprObjC.cpp
test/CodeGenObjC/encode-test.m

index 1d1f6aeb34880ad7e88ef1c5411dea4fad70695e..70eb2a3c72725c993f77ee1b036460071cc8e65d 100644 (file)
@@ -128,7 +128,8 @@ ExprResult Sema::BuildObjCEncodeExpression(SourceLocation AtLoc,
   if (EncodedType->isDependentType())
     StrTy = Context.DependentTy;
   else {
-    if (!EncodedType->getAsArrayTypeUnsafe()) // Incomplete array is handled.
+    if (!EncodedType->getAsArrayTypeUnsafe() && //// Incomplete array is handled.
+        !EncodedType->isVoidType()) // void is handled too.
       if (RequireCompleteType(AtLoc, EncodedType,
                          PDiag(diag::err_incomplete_type_objc_at_encode)
                              << EncodedTypeInfo->getTypeLoc().getSourceRange()))
index ade0c618225f758c31eabd36d07fbe82a6d3194d..f30fb26a1e65993364fb8120e3085a01e1f75a40 100644 (file)
@@ -161,3 +161,7 @@ struct f
 
 // CHECK: @g10 = constant [14 x i8] c"{f=i[0{?=}]i}\00"
 const char g10[] = @encode(struct f);
+
+// rdar://9622422
+// CHECK: @g11 = constant [2 x i8] c"v\00"
+const char g11[] = @encode(void);