<table border="1" cellspacing="0" cellpadding="8">
<tr>
<th>Issue</th>
<td>
<a href=https://github.com/llvm/llvm-project/issues/98128>98128</a>
</td>
</tr>
<tr>
<th>Summary</th>
<td>
[Analyzer] False positive uninitialised member when brace initialization used
</td>
</tr>
<tr>
<th>Labels</th>
<td>
new issue
</td>
</tr>
<tr>
<th>Assignees</th>
<td>
</td>
</tr>
<tr>
<th>Reporter</th>
<td>
dd8
</td>
</tr>
</table>
<pre>
The following code produces an analyzer warning that member_pointer is garbage or undefined:
```
class One
{
public:
char* member_pointer = nullptr;
};
class Two
{
public:
typedef enum
{
nameNone = 1,
nameTwo = 2,
} Name;
const Name member_name = nameNone;
One member_one;
};
char* Test()
{
Two* two = new Two{ Two::nameTwo };
auto pointer = two->member_one.member_pointer; // reports assigned value is garbage or undefined
return pointer;
}
```
This looks incorrect because default initialisation is done on any members not initialised by the brace initializer:
https://en.cppreference.com/w/cpp/language/aggregate_initialization#Implicitly_initialized_elements
I've confirmed member_pointer in the code above is initialised to zero when testing with godbolt.org using GCC/CLang/MSVC
</pre>
<img width="1px" height="1px" alt="" src="http://email.email.llvm.org/o/eJyEVF2PqzYQ_TXmZbQRMZsFHnhINqW6UnvvQ6O-rvwxgFtjI38EZX99BWETktuqEgLjGc85ZzwzzHvVGsSK7A5kd0xYDJ11lZRFwq28VKcOobFa21GZFoSVCIOzMgr0wAwww_TlEx2MzJnJI3QsQI89R_cxWGUCOlAeWuY4axGsg2gkNsqgJNmepEeSfr3f0uWZf4Vm3sMPg4s1P1wXQ-RaidXZUnTMEbp_RiXZEUzUegiOZIevKMf7egVzGu3_woTLgBIbQBP72-bNf1qnpWE9frcGZ_Atoe_PxtNoZxt9sq0CHuE763FFsxTW-DDvfmmcQl0FLoBr9x_m5vdg-Vn7krgT-kBoQWj5lASSllNm6B7CwtvgOCcrP8yfbE-y_U3XA0DJYrCwvoww2heS_XKntnm8MZIdgNCa0BocDtYFD0t1SjgzHfE_C-kL0mGIzsA93l35v5XY9X3qlAdt7d8elBHWORQBOAoWPYLEhkUdQBkVFNPKs6CsmYjI6Zrt1AGXJdsejF15ogR-gdAhcMcE3gyfE7MFuwth8NPfLBvNRgyDwwYdGoEbYXtC65HQWgwDobVmpo2sRUJr1rYOWxbw4xZ2ZkZo9q0ftBIq6MvdhvIDNfZogl9L_0ZofkYQ1jTK9Sh_alwz85-7nnF7nm9gLTBY-ERnYezQQEAfphEwqtBBayW3OmysayH6afvX93dC6_ffmGkJrX__48-lARJZZbLMSpZgtc1puttm-VuZdFWacynyotg1W57LkufsrSwbFCgzjkiLRFU0pa9pnpZpQUtabFKBspCiEbtGML7NyWuKPVN6o_W5n6gkyvuIVVlsaZFoxlH7efBROhX2bCSUTnPQVdOZFx5bT15TrXzw9yhBBT1PzP0y_sjuCDXTHmGwXgV1RohmnahrYq95eiqHa0VFjzKJTlePJdGq0EW-VMKEv3xeBmf_QhEIrWfWntD6qupc0X8CAAD__wX42Es">