<html><body style="word-wrap: break-word; -webkit-nbsp-mode: space; -webkit-line-break: after-white-space; "><div><html>On Mar 11, 2008, at 10:52 PM, Dale Johannesen wrote:</html><div><br></div><blockquote type="cite"><div style="word-wrap: break-word; -webkit-nbsp-mode: space; -webkit-line-break: after-white-space; "><div><div><div><blockquote type="cite"><div>I think the test case is bogus in terms of language correctness, </div></blockquote><div><br class="webkit-block-placeholder"></div><div>Why?</div></div></div></div></div></blockquote><div><br></div>My gut. I listen to my gut. More seriously, C99 section 6.2.6.1 paragraph 6 has:</div><div><br></div><div><div style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; font: normal normal normal 12px/normal Times; "></div><blockquote type="cite"><div style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; font: normal normal normal 12px/normal Times; ">When a value is stored in an object of structure or union type, including in a member<span style="font: 12.0px Helvetica"> </span></div><div style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; font: normal normal normal 12px/normal Times; ">object, the bytes of the object representation that correspond to anypadding bytes take<span style="font: 12.0px Helvetica"> </span></div><div style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; font: normal normal normal 12px/normal Times; ">unspeciļ¬ed values.<span style="font: 9.0px Times">42)</span></div></blockquote><div style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; font: normal normal normal 12px/normal Times; "><font class="Apple-style-span" size="1"><span class="Apple-style-span" style="font-size: 9px;"><br></span></font></div><div style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; font: normal normal normal 12px/normal Times; "><font class="Apple-style-span" color="#000000" face="Helvetica"><span class="Apple-style-span" style="background-color: transparent;">and the footnote says:</span></font></div><div style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; font: normal normal normal 12px/normal Times; "><font class="Apple-style-span" face="Helvetica"><br></font></div><div style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; font: normal normal normal 12px/normal Times; "><font class="Apple-style-span" face="Helvetica"><div style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; font: normal normal normal 10px/normal Times; "></div></font></div><blockquote type="cite"><div style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; font: normal normal normal 12px/normal Times; "><font class="Apple-style-span" face="Helvetica"><div style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; font: normal normal normal 10px/normal Times; ">42) Thus, for example, structure assignment need not copyany padding bits.<span style="font: 12.0px Helvetica"> </span></div></font></div></blockquote><div><br></div><div>I think that covers this case for at least C99. The test case should not assume the padding bytes are copied.</div><div><br></div><div>If you assume "need not copy" semantics, the test case doesn't have much value for correctness. If you want LLVM to assume an implementation-specific "must copy" or "must not copy" behavior, you could tweak the test case as needed, I suppose. But under aggressive optimization, you rapidly approach "must copy" semantics, and then the question is why you don't do that for even the degenerate cases. So again, it turns into an optimization test case. </div><div><br></div><div>Shantonu</div></div><br></body></html>