<table border="1" cellspacing="0" cellpadding="8">
    <tr>
        <th>Issue</th>
        <td>
            <a href=https://github.com/llvm/llvm-project/issues/56628>56628</a>
        </td>
    </tr>

    <tr>
        <th>Summary</th>
        <td>
            missing-field-initializers warning not reporting missing designated initializers
        </td>
    </tr>

    <tr>
      <th>Labels</th>
      <td>
            new issue
      </td>
    </tr>

    <tr>
      <th>Assignees</th>
      <td>
      </td>
    </tr>

    <tr>
      <th>Reporter</th>
      <td>
          ottojo
      </td>
    </tr>
</table>

<pre>
    In the following code, the `missing-field-initializers` does not produce a warning that `b` is not explicitly initialized.

Changing `CheckForMissingFields` to `True` here:
https://github.com/llvm/llvm-project/blob/a9a60f20e6cc80855864b8f559073bc31f34554b/clang/lib/Sema/SemaInit.cpp#L2167-L2169
seems to produce the expected warning.

The comment suggests
```
// Disable check for missing fields when designators are used.
// This matches gcc behaviour.
```
However, GCC *does* produce the warning in that case.
Comparison with GCC: https://godbolt.org/z/WeYdY11q3

```c++
struct ExampleStruct {
    int a;
    int b;
};

ExampleStruct buildExampleStruct(int a) {
    ExampleStruct e{
            .a=a
    };
    return e;
}
```

Build flags: `-Werror=missing-field-initializers -std=c++20`

Expected behavior:
```
main.cpp:10:5: error: missing field 'b' initializer [-Werror,-Wmissing-field-initializers]
```
matching GCCs
```
<source>:9:5: error: missing initializer for member 'ExampleStruct::b' [-Werror=missing-field-initializers]
```

Actual behavior: Compiles without warning/error.



</pre>
<img width="1px" height="1px" alt="" src="http://email.email.llvm.org/o/eJyVVEtzmzAQ_jX4orEHhAFz4OA4SduZ9tTMZHoUYjFKBXIlEbf99d3lEZtMkpkysGL12P307aM01Z_iS8d8A6w2Wpuz6o5MmgoCfhhmgzRslXM4va4V6GqtOuWV0OovWIeLrDLgWGc8O1lT9RKYYGdhO7LjG-HJQEn71LgLfp-0ksrrP-xiqdoE4W0Q7kd5aER3pPN47NCA_Hlv7LcRwz1BGNx6Q8sPtgfSGrAQxNP5xvuTI43f43tUvunLjTQtKlo_z8Ma8T6B9KiW2pQ4iFykYc1DSKXchbsk2aXbclcnSR5mcSnjqI63SbKlrVIjRDKkSPsOrZiGL3injTydAh5_5VGarUnmIy4H0DoCPjNF_CIfCAKqmbQFEw-4AYG30Hnm-uMRnHfTehpO76gOV2W3yolS4xliDQNq2RQ7NsTOsXMDHavAqWMnvLGOCQusd5cAjHYeGoxWKzzacewoJSuhEc_K9HbzpvvP5gzPYClnPh0OLOB7ygocFled00J1Y2ZI4WCydzDtSVjlTMfOGC-yggFkryJpqtJovzGWqP-L3yP8qH5E0a_4mrQXbDLgN_SO5HvbS8_ufov2pOH7qAXZtMrwUUiyCOJXM-XLTJDdXv4HuTRW9kpXi6mA70ajPF-6Wh6Exdr8bBDLrbjMX7sn3YLvbYeHr_G9mRuDvCF0rNbiSIRS7awfwVpj0cv7Bc7Wzle4Y6KSv7Z6N2fvlCD2pQhfgWiF6oa6iPdRiCIhEJP__TJLMX0yrKrsqj9YFiQ3M15-WD9-0JKSt1kYspl8YGq9U0PxwWGGS2T0DkHl76K8xjXUGLQlQeTZMvpIRbwfbnKF_iO238M-yr30vdDXTDMqG6WxRqloTO_nEsPSGLwtmskoV1URV3mci5XHJgzFB7Gf65XatoWTsZ60mYW5i2Dwr0-tequL_-7AaLOnhnGfpCnfrZqilttcYrvl9RZbLzZlEcqEb5OsijivebbSogTtCmQ24LyDMxtM4D-SuFIFDzkPMx5GPN7F0aaKdjWkaRaneRTHCQ-2ITZrpTeEgxrKyhYDpLLH-tiGWmGnvSwKR3cFGNyhfdEj3bYw3psnsxo8FwPyf48WP1E">