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

    <tr>
        <th>Summary</th>
        <td>
            Clang does not warn about access to uninitialized data
        </td>
    </tr>

    <tr>
      <th>Labels</th>
      <td>
            clang
      </td>
    </tr>

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

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

<pre>
    Consider following snippet of code

----
struct data{
        int i;
};
data foo();
void bar(const data& d);

void bar1(){
 const data d = [&]{bar(d); return foo();}();
}

void bar2(){
 data d = (bar(d), void(), foo());
}

void bar3(){
    data d;
 bar(d);
    d = foo();
}
----

bar1, bar2, bar3 are equivalent, but only in bar2 clang warns about a potential potentially access to uninitialized data ("-Wuninitialized-const-reference").


In fact, clang does not generally warn when accessing an unitialized member variable

----
void bar5(){
    data d;
    ++d.i;
 bar(d);
}
----

or even an integral value:

----
void bar6(){
    int i = [&]{ ++i; bar(i); return 42;}();
}
----


Example on compiler explorer: https://godbolt.org/z/4GKnqGcdz
</pre>
<img width="1px" height="1px" alt="" src="http://email.email.llvm.org/o/eJyMlM2SozgMx5_GXFSkQHyFA4dOspna2gfYs8EK8a5jM7ZJT_fTbxnI50xn5yJciqz_T5YU7pzsNVHDig0rdhEf_dHY5kD_Shu1Rnw0W6OdFGThYJQy71L34LQcBvJgDtAZQSzZseRttnEcx_PJeTt2HgT3nFWbS0wttQfJsouj2l3PIRIOxjBcM6yv7rORAlpuGa47o92SEUsQ91GPsemS46ILt5sggGU7COViyYodqzZz8iUdWPKj1Y8g1e4JKnh-oYvPuveKuL4Twi2ES0s8bu_0_l8me5YBWJSuN-GhqLuwieXnV74q3Ro42_k1t0t10zcDbgno-yjPXJH2k3v0YLT6AKmnUOgU1z28c6sd8NaMHjgMxpP2kqvbSX0A7zpyDryBUUstg1d-kpgrmjAx_vvhp3hqZ2zpQJZ0RwyRYb26x57tnxoOvJsAZx5hyIE2HnrSZCf5gAjvR9ILSBhwrgPLleREp5YsnLmVvFVfzPulOcVvNAcAGG4YbsRKvmzZl20xFugcmDVI7am3XMGZq5FY9vaar_wF37SUP-3FwhgIFzb5uCM5vl6OZ-jZ_vGDnwZFYDR05jRIRRbox6CMJcuyNzh6P7hQBu4Z7nsjWqP8ytie4f6T4T7_9pf-_q0Tn5FoMlFnNY-oSaskSYqyTtLo2IgW26LtsM3rDOu6KERVrssizykvq4NIItlgglmapkWaJ2meroi3dcIr6kSdFWXHWZ7QiUu1Uup8CtqRdG6kpsKsTiPFW1Ju-stEnAYrTGCxi2wT4uN27B3LEyWdd7cMXnpFzfZxDqfpW_bjxR5Eo1XN08NIfxzbVWdODPdBZPnEgzX_UBj6_cTsGO4n7P8CAAD__9VksPU">