<html><body style="word-wrap: break-word; -webkit-nbsp-mode: space; -webkit-line-break: after-white-space; ">
Renato,<div><br><div><div>On Mar 4, 2011, at 10:00 AM, <a href="mailto:llvmdev-request@cs.uiuc.edu">llvmdev-request@cs.uiuc.edu</a> wrote:</div><br class="Apple-interchange-newline"><blockquote type="cite"><p style="margin: 0.0px 0.0px 0.0px 0.0px"><font face="Monaco" size="3" style="font: 12.0px Monaco">That's what the packed is for.</font></p> <p style="margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Monaco; min-height: 16.0px"><br></p> <p style="margin: 0.0px 0.0px 0.0px 0.0px"><font face="Monaco" size="3" style="font: 12.0px Monaco">%Base = type { i32, i8 }; // size = 8</font></p> <p style="margin: 0.0px 0.0px 0.0px 0.0px"><font face="Monaco" size="3" style="font: 12.0px Monaco">%POSDerived = type { %Base, i8 }; // i8 offset = 8, size 12</font></p> <p style="margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Monaco; min-height: 16.0px"><br></p> <p style="margin: 0.0px 0.0px 0.0px 0.0px"><font face="Monaco" size="3" style="font: 12.0px Monaco">%Basep = packed type { i32, i8 }; // size = 5</font></p> <p style="margin: 0.0px 0.0px 0.0px 0.0px"><font face="Monaco" size="3" style="font: 12.0px Monaco">%nonPOSDerived = type { %Basep, i8 }; // i8 offset = 5, size 8</font></p> <p style="margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Monaco; min-height: 16.0px"><br></p> <p style="margin: 0.0px 0.0px 0.0px 0.0px"><font face="Monaco" size="3" style="font: 12.0px Monaco">cheers,</font></p> <p style="margin: 0.0px 0.0px 0.0px 0.0px"><font face="Monaco" size="3" style="font: 12.0px Monaco">--renato</font></p> </blockquote></div><br></div><div><br></div><div>does't  the %nonPOSDerived type have to be packed for its non-Natural size 5 member to</div><div>end up with only 5 bytes within its encompassing struct...</div><div><br></div><div>sure the i8 can be on any boundary, but %Basep can only be accessed within %nonPOSDerived</div><div>as a non-Natural sized object if %nonPOSDerived is itself declared as packed, otherwise if</div><div>%nonPOSDerived is not packed then it can contain only Natural sized fields.</div><div><br></div><div>so it seems that both structs need to be declared packed, one so the size can be known as less than</div><div>a whole Natural size, and the other so that its fields can be fit together tightly without padding.</div><div><br></div><div>seems like two different but related meanings for the word "packed".</div><div><br></div><div><br></div><div>am I confused ?</div><div><br></div><div>Peter Lawrence.</div></body></html>