<html><head><meta http-equiv="Content-Type" content="text/html; charset=us-ascii"></head><body style="word-wrap: break-word; -webkit-nbsp-mode: space; line-break: after-white-space;" class="">Right - this is intended to catch a problem where someone tries to store a value in SubclassData that is too large to fit in the bitfield.<div class=""><br class=""></div><div class="">-Chris<br class=""><div><br class=""><blockquote type="cite" class=""><div class="">On May 3, 2020, at 4:45 PM, Craig Topper via llvm-dev <<a href="mailto:llvm-dev@lists.llvm.org" class="">llvm-dev@lists.llvm.org</a>> wrote:</div><br class="Apple-interchange-newline"><div class=""><div dir="ltr" class="">Isn't the SubclassData member a 24 bit bitfield? I think the truncation would happen on the assignment to it.<div class=""><br clear="all" class=""><div class=""><div dir="ltr" class="gmail_signature" data-smartmail="gmail_signature">~Craig</div></div><br class=""></div></div><br class=""><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" class="">llvm-dev@lists.llvm.org</a>> wrote:<br class=""></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 class="">
<br class="">
I see this in the Type class:<br class="">
<br class="">
unsigned getSubclassData() const { return SubclassData; }<br class="">
<br class="">
void setSubclassData(unsigned val) {<br class="">
  SubclassData = val;<br class="">
  // Ensure we don't have any accidental truncation.<br class="">
  assert(getSubclassData() == val && "Subclass data too large for field");<br class="">
}<br class="">
<br class="">
How will the assert ever get triggered?<br class="">
The type is "unsigned" so how can getSubclassData() ever not equal val ?<br class="">
Where does the truncation take place?<br class="">
<br class="">
Kind Regards<br class="">
<br class="">
James<br class="">
_______________________________________________<br class="">
LLVM Developers mailing list<br class="">
<a href="mailto:llvm-dev@lists.llvm.org" target="_blank" class="">llvm-dev@lists.llvm.org</a><br class="">
<a href="https://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-dev" rel="noreferrer" target="_blank" class="">https://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-dev</a><br class="">
</blockquote></div>
_______________________________________________<br class="">LLVM Developers mailing list<br class=""><a href="mailto:llvm-dev@lists.llvm.org" class="">llvm-dev@lists.llvm.org</a><br class="">https://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-dev<br class=""></div></blockquote></div><br class=""></div></body></html>