<div dir="ltr"><div><div><div><div><div><div>It is a case of "undefined value" and will depend on what happens to be on the stack where the struct S is located. This may be the same or different value, depending on a number of factors:<br></div>1. Is the stack at the same place every time.<br></div>2. What (if anything) has this been used for before you got here...<br></div><div>3. If the code is optimised or not.<br></div><div>4. Processor architecture.<br></div><br></div>For example, if you have address space randomization turned on, the return address and local variable addresses that may be stored on the stack will vary, where if you haven't got that, it will be constant. If that part of the stack has NEVER been used, then zero is a likely value, but some runtime environment will fill uninitialized stack locations with other patterns. <br><br></div>And of course, if the code is optimised, it will depend on what registers the value for x ends up in, and what that was holding before - and this of course also depends on the actual processor architecture.<br><br>--<br></div>Mats<br></div><div class="gmail_extra"><br><div class="gmail_quote">On 5 August 2015 at 06:29, Nikola Smiljanic <span dir="ltr"><<a href="mailto:popizdeh@gmail.com" target="_blank">popizdeh@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 dir="ltr">What version of clang, I've just tried this with recent revision and it's printing random values.</div><div class="gmail_extra"><br><div class="gmail_quote"><div><div class="h5">On Wed, Aug 5, 2015 at 3:36 AM, Anders Granlund <span dir="ltr"><<a href="mailto:anders.granlund.0@gmail.com" target="_blank">anders.granlund.0@gmail.com</a>></span> wrote:<br></div></div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div><div class="h5"><div dir="ltr"><div style="font-size:12.8000001907349px">It seems like this program always prints 0. I used the following command line:</div><div style="font-size:12.8000001907349px"><span style="color:rgb(199,37,78);font-family:Menlo,Monaco,Consolas,'Courier New',monospace;font-size:12.6000003814697px;line-height:18.0000019073486px;background-color:rgb(249,242,244)"><br></span></div><div style="font-size:12.8000001907349px"><span style="font-size:12.6000003814697px;line-height:18.0000019073486px;background-color:rgb(255,255,255)"><font color="#000000" face="monospace, monospace">clang++ prog.cc -std=c++14 -pedantic-errors</font></span></div><div style="font-size:12.8000001907349px"><br></div><div style="font-size:12.8000001907349px"> It looks like clang does an unnecessary zero-initialization of x here. Why is that?</div><div style="font-size:12.8000001907349px"><br></div><div style="font-size:12.8000001907349px"><font face="monospace, monospace">#include <iostream></font></div><div style="font-size:12.8000001907349px"><font face="monospace, monospace">struct S { int x; S() { std::cout << x << std::endl; } };</font></div><div style="font-size:12.8000001907349px"><font face="monospace, monospace">int main() { S s; }</font></div><div style="font-size:12.8000001907349px"><br></div></div>
<br></div></div>_______________________________________________<br>
cfe-dev mailing list<br>
<a href="mailto:cfe-dev@lists.llvm.org" target="_blank">cfe-dev@lists.llvm.org</a><br>
<a href="http://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-dev" rel="noreferrer" target="_blank">http://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-dev</a><br>
<br></blockquote></div><br></div>
<br>_______________________________________________<br>
cfe-dev mailing list<br>
<a href="mailto:cfe-dev@lists.llvm.org">cfe-dev@lists.llvm.org</a><br>
<a href="http://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-dev" rel="noreferrer" target="_blank">http://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-dev</a><br>
<br></blockquote></div><br></div>