<div dir="ltr"><br><div class="gmail_extra"><br><br><div class="gmail_quote">On Fri, Feb 14, 2014 at 7:21 AM, Dmitri Gribenko <span dir="ltr"><<a href="mailto:gribozavr@gmail.com" target="_blank">gribozavr@gmail.com</a>></span> wrote:<br>
<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div class="">On Fri, Feb 14, 2014 at 12:41 PM, Per Viberg <<a href="mailto:Per.Viberg@evidente.se">Per.Viberg@evidente.se</a>> wrote:<br>

><br>
> Hi,<br>
><br>
> I'm looking into extending the check that warns for uninitialized arguments.<br>
> Below I've described what should be detected. Any opinions on if it's a<br>
> useful check or potential problems/drawbacks with it?.<br></div></blockquote><div><br></div><div>Do you have concrete examples of where this would have detected a bug in code?</div><div> </div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
<div class="">
><br>
> Check: should this be detected as a warning for uninitialized<br>
> argument?:"warning: Function call argument is an uninitialized value"<br>
><br>
> void doStuff(const int *p);<br>
> void f(void);<br>
><br>
> void f(void) {<br>
>       int x;<br>
>       doStuff(&x);  // ← warning?<br>
> }<br>
<br>
</div>doStuff() is allowed to const_cast the constness away and modify 'x'.<br></blockquote><div><br></div><div>Yeah - I suspect that's acceptable, but someone would have to run the numbers/experiments to see.</div>
<div> </div><div>Another possible problem: what if doStuff is just storing the pointer for later use?<br><br>int x;<br>set_foo(&x);<br>x = 3;<br>use_foo();<br><br>Not sure how common that would be and thus how bad the warning would be.</div>
<div><br></div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">But even if we allow a false positive in that case, we should also<br>
make sure that the address of 'x' does not escape before the call.</blockquote><div><br>Agreed - but we could just power this by the same logic as all the -Wuninitialized warnings. </div></div></div></div>