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

    <tr>
        <th>Summary</th>
        <td>
            static fields in the extension ({ ... }) aren't initialized
        </td>
    </tr>

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

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

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

<pre>
    [root@freebsd root]# cc --version
FreeBSD clang version 11.0.1 (git@github.com:llvm/llvm-project.git llvmorg-11.0.1-0-g43ff75f2c3fe)
Target: x86_64-unknown-freebsd13.0

Given:

```
typedef const struct where {
        const char *func;
        const char *file;
        long line;
} *where_t;
```

and:

```
struct connection_filter {
        /* filters */
        enum connection_kind kind;
        const char *name;
        const struct id *this_id_eq; /* strict; not same_id() */
        const struct id *that_id_eq; /* strict; not same_id() */
        /* current result (can be safely deleted) */
        struct connection *c;
        /* internal: handle on next entry */
        struct list_entry *internal;
        /* internal: total matches so far */
        unsigned count;
        /* .where MUST BE LAST (See GCC [bug 102288](https://bugs.freebsd.org/bugzilla/show_bug.cgi?id=102288)) */
        where_t where;
};
```

this:

```
+       struct connection_filter cq = {
+               .where = ({                             \
+                               static const struct where here = {      \
+                                       .func = __func__,               \
+                                       .file = __FILE__,               \
+                                       .line = __LINE__,               \
+                               };                                      \
+                               &here;                                  \
+                       }),
+       };
+       dbg("FOR_EACH_CONNECTION_... in %s %s %ld",
+           cq.where->func, cq.where->file, cq.where->line);
```


is mis-compiled.  It prints NULL, NULL, 0 when it should print __func__, __FILE__, __LINE__.


Note:
- only the field .where is initialized, if a second field is initialized to something non-zero then things seem to compile correctly
- I could include the assembler but I'm not sure of the point - the compiler lost track of values in a static structure leaving the fields unset
</pre>
<img width="1px" height="1px" alt="" src="http://email.email.llvm.org/o/eJytVl1vozoQ_TXkxQIRCIQ-5KFNmr2RelPptvuMjD0Ebx2TYtNu-uvvGJOvps1-osgQ-_jM2J4546Lm24mX3DR1bbxRWDYAheak-5vMvCgmjBHff4FGi1p54cwLr-cIunmYESapWpF-iAyHQRgMiRdlK2GpsK3aImD12ouvpXxZe9HcvvxNU38DZgIEENtRNyvfTfZDfzWKy3KclBGLS_CiK2fxkTYrMMhDvmdpno78Vj2p-lX5vb_DOAgd0rVfxAsohB_3eWnY_7q_ZrsBDiVhtdKGaNO0zJDXChog3vjGYUj_OAyraIPLuy5bxbz4MkRIOIPIGndLCnUY8cYzi-6s5ubQfeqpa6nilxfULwEdUbi7eCI5emGgOV8OHgRaJW5YWw9szwkEVLs-pnoSihPb_GDhiq7PF36yxYJbnKmEzgXP4RnRO4cQIZjdBqJqxCMVQjCeMAw-dPJDXmr-mLefxtqmAWVIA7qVxgY2o4oUgAwlyC3hIMEA_4zl7Dws6jxwemNC4VkoKm2MV3jWEgjOUPDd4FmYZnvJhBTa5HvUgenHlkxtqCRralgFmuialO4Yzyy1SouVAo7LaZX5jDpw-fPv14dHcnNL7q7xjdv2AEC-TKcEZaZoV2QYRlGWdeqSVcZstI1rSzDHUR30KR2gLLiuNyElxU9d1a85_g_YSnjxHI8wnvVcqBOfnEKfW-59nHiXs83G5-V086Kbzw56l3jsmaCLh_w7TNk9_YZ1KIzH8fvx08dLpp8RvX-0oUawj8TtYHBn7Rdo935bDexY8tx-5rkXTX_f2wMt6mZPO1_c3f4tWiu6Pe3dYvmntC54fs70r9BGaR-jf4XWemnT4gx4Evv7Xl6sOkWM5vf_5bfX03_y6f1yeTt9XNwv8yAIUDbQw0TvG4nCF31Abx_27ALb9-Lbrlridp_02fL4rq8rjOjwxbR0rdBkLbSPN4sNEvGAkIUhmwaFTZPl17s7S717hzbsFcGrBspHK7nDnYTtcaztAiQ4t7qsDewlwUd1xhJgKsAyCkjbZzK6JpQwgkrxZkvDlIiSUKIBM5H30FMMajAK7xpQcfB6oGrlv0FTW2ZFuj7UZYC1hfULxjcWJmbkdufLwsqyZVZMthw6t6jWsC4kylDRGrLwovHalb8W3azLDrOp7V743XdP3uA1BSXDNJQ9WdgLlS1Yh-0qnKg4ObE0EuiL9Xq_DdoWCjADPon5VXxFB0YYCZN-Yg8RqpuApQ2UdnWxkz4bZS5qCcXCix6b440atI2cnNaLoyumu1u-u2LiX6E1-o8fSXKVxoNqEqclG8VpFo1GdMiykKXDKCx4xsfFqEiGw4GkBUht78QY4ApeSUdhgz2ZDcQkwooTpuHVMIuTOAuiLMlilhYF52lKeYIXX1hTIQPrh61hg2bSuWRrGw7aWq0Pg3hKtq5CZw75aWuqupkwip3bQWd50nn-P6IAM9A">