Don't require nullability on 'va_list' harder.
authorJordan Rose <jordan_rose@apple.com>
Fri, 11 Nov 2016 00:23:59 +0000 (00:23 +0000)
committerJordan Rose <jordan_rose@apple.com>
Fri, 11 Nov 2016 00:23:59 +0000 (00:23 +0000)
Platform headers don't always define 'va_list' in terms of Clang's
'__builtin_va_list', so in addition to checking for our own
synthesized decl, also just look for typedefs literally named
'va_list'. Better to err on the side of false negatives here.

Fix-up for rdar://problem/25846421.

llvm-svn: 286531

clang/lib/Sema/SemaType.cpp

index 0fbf97f..e987379 100644 (file)
@@ -3928,6 +3928,9 @@ static TypeSourceInfo *GetFullTypeForDeclarator(TypeProcessingState &state,
       do {
         if (typedefTy->getDecl() == vaListTypedef)
           return true;
+        if (auto *name = typedefTy->getDecl()->getIdentifier())
+          if (name->isStr("va_list"))
+            return true;
         typedefTy = typedefTy->desugar()->getAs<TypedefType>();
       } while (typedefTy);
       return false;