aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--lib/Sema/SemaInit.cpp2
-rw-r--r--test/Sema/missing-field-initializers.c2
2 files changed, 3 insertions, 1 deletions
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; };