================ @@ -2363,23 +2356,32 @@ void InitListChecker::CheckStructUnionTypes( } // Emit warnings for missing struct field initializers. - if (!VerifyOnly && InitializedSomething && CheckForMissingFields && - !RD->isUnion()) { - // It is possible we have one or more unnamed bitfields remaining. - // Find first (if any) named field and emit warning. - for (RecordDecl::field_iterator it = HasDesignatedInit ? RD->field_begin() - : Field, - end = RD->field_end(); - it != end; ++it) { - if (HasDesignatedInit && InitializedFields.count(*it)) - continue; + if (!VerifyOnly && InitializedSomething && !RD->isUnion()) { + // Disable missing fields check for: + // - Zero initializers + // - Designated initializers (only in C). This matches gcc behaviour. + bool DisableCheck = + IList->isIdiomaticZeroInitializer(SemaRef.getLangOpts()) || + (HasDesignatedInit && !SemaRef.getLangOpts().CPlusPlus); ---------------- AaronBallman wrote:
This can be hoisted into the preceding `if` statement so we drop a level of indentation below. https://github.com/llvm/llvm-project/pull/81364 _______________________________________________ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits