<div dir="ltr">Isn't the SubclassData member a 24 bit bitfield? I think the truncation would happen on the assignment to it.<div><br clear="all"><div><div dir="ltr" class="gmail_signature" data-smartmail="gmail_signature">~Craig</div></div><br></div></div><br><div class="gmail_quote"><div dir="ltr" class="gmail_attr">On Sun, May 3, 2020 at 4:06 PM James Courtier-Dutton via llvm-dev <<a href="mailto:llvm-dev@lists.llvm.org">llvm-dev@lists.llvm.org</a>> wrote:<br></div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex">Hi,<br>
<br>
I see this in the Type class:<br>
<br>
unsigned getSubclassData() const { return SubclassData; }<br>
<br>
void setSubclassData(unsigned val) {<br>
  SubclassData = val;<br>
  // Ensure we don't have any accidental truncation.<br>
  assert(getSubclassData() == val && "Subclass data too large for field");<br>
}<br>
<br>
How will the assert ever get triggered?<br>
The type is "unsigned" so how can getSubclassData() ever not equal val ?<br>
Where does the truncation take place?<br>
<br>
Kind Regards<br>
<br>
James<br>
_______________________________________________<br>
LLVM Developers mailing list<br>
<a href="mailto:llvm-dev@lists.llvm.org" target="_blank">llvm-dev@lists.llvm.org</a><br>
<a href="https://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-dev" rel="noreferrer" target="_blank">https://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-dev</a><br>
</blockquote></div>