]> granicus.if.org Git - clang/commitdiff
Don't complain about missing field initializers when the initializer
authorDouglas Gregor <dgregor@apple.com>
Fri, 18 Jun 2010 21:43:10 +0000 (21:43 +0000)
committerDouglas Gregor <dgregor@apple.com>
Fri, 18 Jun 2010 21:43:10 +0000 (21:43 +0000)
list is completely empty, from Lasse Kärkkäinen! Fixes PR7413.

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

lib/Sema/SemaInit.cpp
test/Sema/missing-field-initializers.c

index ac073604eed09424b9f5014ac92173abd154d931..9c150593b309c3d1dd927ec8f5f69fe368eef9e5 100644 (file)
@@ -1114,7 +1114,7 @@ void InitListChecker::CheckStructUnionTypes(const InitializedEntity &Entity,
   }
 
   // Emit warnings for missing struct field initializers.
-  if (CheckForMissingFields && Field != FieldEnd && 
+  if (InitializedSomething && CheckForMissingFields && Field != FieldEnd && 
       !Field->getType()->isIncompleteArrayType() && !DeclType->isUnionType()) {
     // It is possible we have one or more unnamed bitfields remaining.
     // Find first (if any) named field and emit warning.
index 828191462444e83491c3b5311205c2c5c124027d..6aa48ba9e419d28f0cbfdc2f844f25c9a75a9e9e 100644 (file)
@@ -20,6 +20,8 @@ struct Foo bar1[] = {
   1
 }; // expected-warning {{missing field 'b' initializer}}
 
+struct Foo bar2[] = { {}, {}, {} };
+
 struct One { int a; int b; };
 struct Two { float c; float d; float e; };