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

    <tr>
        <th>Summary</th>
        <td>
            Parser crash when template argument is missing from designated initializer list for a union of structs
        </td>
    </tr>

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

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

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

<pre>
    The following invalid code compiled with `-std=c++2b` causes the parser to crash in clang++ 17 and 18. Here's a [live example](https://godbolt.org/#z:OYLghAFBqd5TKALEBjA9gEwKYFFMCWALugE4A0BIEAZgQDbYB2AhgLbYgDkAjF%2BTXRMiAZVQtGIHgBYBQogFUAztgAKAD24AGfgCsp5eiyahUAUgBMAIUtXyKxqiIEh1ZpgDC6egFc2TKQB2cncAGQImbAA5PwAjbFIQAE5yAAd0JWIXJi9ffyC0jKyhcMiYtnjElIdsJ2yRIhZSIly/AJ5gmrqhBqaiUui4hOT7RubW/I7RvoHyyuSASnt0H1JUTi4ibDZUoy2AajMAZg9UIyUlfYAVY9wzLQBBHyZs/YA1WotMQ8CbR/2AfslERSD4nD8rNd9upjpCrvsAJ6wn4AEVh9weZkCaKOf0xjy2Oz22EOJzOLAu11uGIwTGB2HUqVI70%2BmGOHhuR1w%2B3QqQSLBIpFsEA%2BqC%2B7M53NpwP2LHILLFbJOkv20qI%2B1iCwhGMB%2BwA9Hr9h4kMZgCSSIcAGxaUXi5XU637C10dROpAkjA4HWA0jYIirJgK8W/AB0ruOKNlYcO1g1YflIYRpMjLETMchsUTWJxeOzGIxEXVbBYEQgWqxeN1tqVHkLt32gnQFbzuO9AOr7LrXI1TQr0Yj%2BwArAmkwOeFoW5WfX6A/taOh0Ome6QFmH0Y8848uEt6NxB/wAlwdOR0NwPLZbECVmsSZYjnxyERtNulgBrEAWQchixJH8ADiOP8tD/QI/ySQceGHXcuGkfg2BAQctHIQ9j1PLh%2BCUEAkKfI9t3IOBYBQT08EIQVKGoOhGFYDhuAfQRhDECROBkORhGUNRNFw8h9AsQxTTQC9rHsbBHGcVwIHcCZ2hCJhMFmIZEimdJMjEnJvDaAxlOKJh5IqYYeGE0T6jGFp1MmQzalU3pml0%2BYpmBPopIMBybIiQY9MUpYlGvdZuEJXYBVvMlzkuSUMWeV5q21f5AWBUFwQrKEYVxKEkRSyd82xdd8QefziVJU4QqpLkaSEelGWZDt7W7Xl%2BUFYUqo5es1VleVGpVFrNWih5dQNI0TRMc1FzMa12odLQnUXF03Q9LBsDbfZfX9UhAw7UNwyOFN%2B1jTN1BHZMo1HHasyy1sNyyjdHkLfZi1LctfgWxqu25Rtm1Oqd21ZTthHrWJe3Wg7h32NMxwnd6FqW2d52GnamlXZLcwuh48Og/dkOfE8z0EyFvNWdYYyOCx%2BBwnQFiWd0WBwRIy0MbhYPIeDEPRri0IwrDH2fMnyHfI4jhDS0LEte9AhkCweAsCw/yg7gjgPDHWY53ClgI5A0HQHYGASciIAwDXGESckTA6LQDJwAA3Ah1jeAhsAAdwAeT5Q86IYLZSEwiBYgx2IIiaBFaP4H3WFIBF7diXRLID8hdY4YR7aYeh/a4nBYh8YAPAkehMN4fgcGLExJGTghfTqM3sGz48GVqHwtijwsRIx%2BgCFiUg/a8HAMZBAh4JzpYaCMYAlGtu3HeYKP6NEcRJBYif2I0DH9AMowTAE6xbEMZvMMgJZeVU7OAFp7cuffgSVFFzDX6wLFifh0DL0hSAIHAt5prpVLcWSnIMsI3LmfTChUtkL%2BADtK2X/m/YyjkzLSQgT0EyYDFLTHGNA5y8Df4KSkF5HyzEdx7jlizbg0I/yWn3paaQqpl7AH2B0EMWgQw8DnPgYgZACY8AWMTTm%2BEiLq1SJrCgVAdY8L4WgShPBrRIXNpbbAw8HZO3Hq7BIHsvZcSDn7KOqiQ5hwjk4KOMdmBEHjonDGKc04Z3oFnKOedTSF2PIQEuzgy4V34FXVANcNgPnrtBY8TcW5tzmp3R%2BPc%2BB9wHkPG2six451YpPJiUhZCzxUPPLiPE%2BIrwvjYISPiX471SHvbgJ8iBn3SbYa%2Bt976P2fvALyIlLLZA/p4FB39ZIIM0kUVSwCtKqRaQZWBTBrKmTyDAmp3Q%2BloLKBgnpJlgEuX6OgjymDlh404BYXBXA0YoVvoQ9QxDSHkMNlQsRtDaGMNIiwu8KyOFKzfFIP8IZpB/mkOBQI0hxwWHuYBWQ0F6YbMxuhew7MSZ4RVhAFAhAaA0G1hPRi094nyDnpxbxSBMK8XoEisFNAiAIj5B%2BQwSKGQghYLvOpfzSBIoMKSpQ6LMXYt4hS/FrciWuHQqs9Z8tuAogIOC944SEhEJIWQihppqGWiORNM2lxtn8r2ZQ6hgQjkPkBVzd80g5V/jVYET80gVUCxAsEL5%2BDULcDZthTmqyibM0NX8xVSx76ZFcNIIAA%3D).

```c++
template <class T>
union Vec2d {
    struct { T x; T y; };
};

template <class T>
constexpr Vec2d<T> operator+(Vec2d<T> const a, Vec2d<T> const b) {
    // Change to `Vec2d<T>` to fix the code
    return Vec2d{.x = a.x + b.x, .y = a.y + b.y};
}

int main() {
    Vec2d<int> foo{};
 Vec2d<int> bar{.x = 5, .y = 10};
    return (foo + bar).x;
}
```
</pre>
<img width="1px" height="1px" alt="" src="http://email.email.llvm.org/o/eJyEV9uSujqzfxrmhlpTEEDgYi7COQoigiLccU4UATkM4NPv0plvr_Vf-6vaVZZN-pD-dVcn6U6GgVRNUXxRgkIJ2kcyjbjtv7K2mnFR1B9pm69fAS7osq3rdiZNRZPmO6lJTmdtXtBZe-9IXeT0TEZMUxvmr2HMKU7LKKBQQAEptWHoLJmGYqBHXNBd0g9FT48tnfXJgGnS0FmdNNWPOs2KdNLkNCt90lbRFxQQBzqhKUGpyXdBF0ty7-qCEjQKSHgcu4HiIAUMChhVm6dtPX62ffVmcE-Kg25kVxgayiMXgh20deUK5Uqfd5FhOGoI7anSecgoSIdx5WlppACIKzuNKu0GrwYFBKAEl6NDYHz2RhNZlRIpXlsZJ_gcK7iDGuChWVbq0AkFWRN8gqdKcSA6jZd1tzwI0jEbd5WmborKyECw8xSQNRk0PXRPIRQOM7ymBvKgLqwQ5sw2RJctkctyVZnrbsWZQ6Kxueo1yoctWI8Ixz6qVwoYcCtU9_6BlUdCThPhsRuIxykNKWAg8fjdWus6-dBvRsZit6eA8CTV4lO7AphcHRhX8gmtp7qM4DmS56ftKYq1xgMFjAiyYTs6nqSmRwoYAJZDrR99jW80qd_n8tRdO7X_HuB2Mzc81M9Ynov4piY7t2SW6wrcJwC6u326NpxYdjLRHJgKsE6PMxKZd0rvpmvh6cjO7xXnPTzfVlBnDDp8cx7qm4iOwO27-QBsC9m2kW7d2zdgHugtZIk6Y9NR3osZylYvY_7mxJXq-yiD5pKcLkS4nDacqLJMfnQ7eLtC3gohc40Q6bfVTnolCypMP7m7fR1lLluxUVmj6Ng5V1sPnAwPpyDcLoX7NNGiX86pEuleFT6WYs-Oj7N1s0cOVI1npM_JlaHbi3Z_QWzg9Ux0_UXWw_ttdgujDYWwvGxe1TomLmbce7HxjLvFRJLES5M-bvaLQgFjhvWcu0dmPx_sONXV833w4-jaLKt-HPdTXSm9DkMvw2TZWhLUiHuQRo0ChocoYKy-lxWmdckm81ZWQIFeNlrIk6_swcZvROpJh7ddieSRQ-6rnANG0pF33pmti00j0vAES--INV09usrNPWLztD_ujVnCMhy8JQg8Ve6tIVUsMzvPyMrUGGB1ix3jjmKd3POtc9Wb7beWwKV2d1ssoEcUFabOBJuraXSsc_eeSX3iunv9Uw9Rd1cObYccZU0R8SLZOXVRbX7n8aRvL5Fy_nbq523yT05YnIUHYEsBhsrJmL1-p0fnZaffjv6aS2DJc8kryic5b0-89-jsW-LrRW2GsTaKoXip3-5ORnR6tEIxsOe6OJvd2ej3IcFC7u0RExydjDWeTsKCNre95nQxGM6TbWXQ0jIuL_IJw1k87efVNfY_lXgN9qxixU7LWlYyrCs77Nf1mls3u4wJa2djWYXLYwLCcbyz7iMHbByM2OrDbcGFlYg5sHeWuck3xiMEuQDMJrnXl9jO5gnzkvu6zvKbW-rSk9FX43sf5lG0uury9q7MjWeQMGdCZT6ilXFSHB1QoemHY08YNPeaBUqnWa0S8Ves-Yytj4UM8U2dCzio86tmKrG6VgfNCiOBU-sKCZCxPCsyoZ8RBGftYup-dgvgxva07QwhBzF7LSAeIMxnWASCJ21QZMe-PhMlqhaAEEkUIznwFhcaSDHEnFyONtIknEd8dBSTqMAUMBK-USIsRfAAbwV29nxZZaatL1szqHAZPBxuMJ-8ZJ4f1jyS6zwc0U_QlWqQ0ysviWRBJ1Yg5rfPLkpUJ4K1OU6cVUS7w2avZ8etEpESIEazZOi0cwD1zZLqTvztONU2Ls4n0YVGJ2ZTWVb-2TCe2mUz2wYpMaPZDPYhsuAodH13trPQb5AzIM6-l4GKT-PNfqOB2rgDFwoY99f1uV5vT9v3qoDR10gz7MAy91BYJa3kd_7NEKz1qeeLeK3JM62Y95kNG65LEu_R1SK0gMLoTlh5s6Q1hyqqYqhGEgydILi_venEfrD-tlerM8wjyebDyscHpT-iy75LUzhLVuxy1kNUkDV8x5mvNeLOfRBPwPP1xu9cJ78runVtG83cZQwfc63R7NwiD3wDHJCnT89q5c8cb1zOcJ_tq0PTj0okBVkojM97xx3fMA7ZT_nJs3U7mGAgCy-wUXfYkhOO1edyOhxsctDfSqifv68R8g_kwousb32n1VYiSsP5aZS8NUZZ3BxA-Q3tFdW2Hb9uyY43FE6OEXKY2-nsz-q4exwTLw6VQOl392DV4L3jvLd93do7pWq6bV3p02XjVtf1rtWYZ3gluigXyETt-bv1ZG_RfOvm7GtvOI5aYjp7ROZJ2q2usXuWBjpIKO5et_D95ioeYvAyh9YUKaHHGJsodZYJF7Po-DF_PGNoQAwTyJgsPhwJI_PNqjXdki6-4uykS6uTwdhDAtFV-HmmvNnfmV6FI_vb7cqnr6DW2fmdt7GdSzTy2KeAYfQZCSfLewxyLI0TbCvkqjLP-zrWtyj0CO66hxkS97h3QL2MjdSD2NvgyrveDjfl_MwlphLOFDCu50gPJKY6n9QFDrotvDFoJzvT4hEH98dKUofZX6Tl7C_iJjayPULw9QJzGgXkT4rRKAb-_m-Yn99vV_fDHYt7VydjQVOcmtXJMNABxek_sqkhbUOfiwzkNCX-GtA0TQ9jP2Xji0cH9EJxL7K-CCVqFPer-Mf3_-sra5thLJau__FHcepLRrdd0Sdj278hS3-I3hZ0QgGV_i_8lALyn6B_WkxaxUlTFa_eldow_zR89bhjS5dkefe4r8b4b-O-GKf-NxeUqHwuNMVpdPKiQKHTz-UF43P95a6_3PXf-fhHMkgz0veENBSQ_g_U_8AizfiKqGzbl_gfe_1bI036v1EJ_8DCMn-Y_R0JBaSybX9wJv2rVpb_gvQ_JfORf3G5zMnJR_HFbmSBZzaSLH_gr0xKykzkAJvIJcdnbCpxPCttMindiOyGKT7IF2AAx8gAsBJgOflT5qVczGRWZJkik4BA8UxxT0j9Wdff91fn_0GGYSq-NiIrch91khb18J5rAGiKmX4LKQBeY07_9bL5K52qgeKZmgzj8PcuIxnr4uvwM6n8jCkzLhr6f4sw6avpXjQjTQb6TobhNRWVfXun8-I1TSVjkdOkISNJavIsevq1P122PZ3QPwejLX8PwvAx9fXXv0YZMuIp_cza14PyAvVL_ur69lpkIwWMdyivdv0d6v8EAAD__y5uTZg">