From: Douglas Gregor Date: Fri, 18 Jun 2010 21:43:10 +0000 (+0000) Subject: Don't complain about missing field initializers when the initializer X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=8e19890c329279c5ac35ab71a35423d429d80165;p=clang Don't complain about missing field initializers when the initializer 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 --- diff --git a/lib/Sema/SemaInit.cpp b/lib/Sema/SemaInit.cpp index ac073604ee..9c150593b3 100644 --- a/lib/Sema/SemaInit.cpp +++ b/lib/Sema/SemaInit.cpp @@ -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. diff --git a/test/Sema/missing-field-initializers.c b/test/Sema/missing-field-initializers.c index 8281914624..6aa48ba9e4 100644 --- a/test/Sema/missing-field-initializers.c +++ b/test/Sema/missing-field-initializers.c @@ -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; };