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

    <tr>
        <th>Summary</th>
        <td>
            Print name of uninitialized subobject (instead of type)
        </td>
    </tr>

    <tr>
      <th>Labels</th>
      <td>
            good first issue,
            clang:diagnostics
      </td>
    </tr>

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

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

<pre>
    There is currently a weird diagnostic in clang when a constructor doesn't fully initialize an object:

```c++
class Foo {
public:
    int a;
    constexpr Foo(){}
};

constexpr Foo F;
```
https://godbolt.org/z/5WdT8d4GE

The diagnostics for this example are a little weird. First we note that the subobject is of type 'int' for some reason and then we actually note where the subobject was declared.

I think mentioning the subobject name instead of the type in the original diagnostic would make much more sense.
</pre>
<img width="1px" height="1px" alt="" src="http://email.email.llvm.org/o/eJxdU01znDAM_TVw0ZQBA8vugUPTdDu99ZCZnv0hwI2xd2zTTfLrKzvZLi1jjGVZ0uM9WTj1Oj4t6BF0ALl5jzaaV-BwRe0VKM1n60LUErQFabid4bqgpQPS2RD9JqPzoBwGW7AhwrQZCtdWR82NfkPgFpz4hTIW7eeifizq23yo34cs2EMaeZcqhABn56AYPrYumzBa_o0GerSNwIv24b6TweDLxafYgh0LdkoJhsePYrS4Hf8otA-A8917g_VuLjFeQqrNzjRmp4QzsXJ-JuuN3v6nejqq7tvXfW7ic0dcgIkYigvxiy98vRjihOjmYHSMZGSiKzhrHyIZYF1EOs4jTQhhE-_0JX3cBPH1gkBMEwU059TBrQgeeXAki1UpzKZEXMaNJzVyxmsW-d-UVx5AIXHuUVX7P_ie8NpnWKkbtLOaVP830nKqqROFXGVY5M3QqEvS2nk9a8vNvoGubjMKVv6MsG5ygdURoIA2YFXi2BwOh6Gp27Yp1diqU3viZdRE0PjDJ71zRaq02XtzqR0iEn2Ph7BQD5SbN-N_Guq4bKKSbiXDmN-3z6eLd7lN2VmHsGFI6h4PdVMuo-x530tkQzd1QvRNx6f6JJVQJ9YduomXhgs0YSx66mQ2O6dgynLmTLRVsC8EkOX7Q0h2zZGc_WOpR1Yz1tSsb_q6b5tqaPp-QoG1UAM_IhZdjSvXpkpYUwOWfsywxTYHchodYrg76Rbp2SJmSJSfb3FxfoyCo0LvywxszP_3B7TzTP4">