<div dir="ltr">The purpose of those assertions is to ensure that the bitfields are actually the size we think they are. With MSVC, if you use enum bitfields, things get all messed up, so the assertions were added in r130632.</div><div class="gmail_extra"><br><div class="gmail_quote">On Tue, Jun 2, 2015 at 9:24 AM, Amila Jayasekara <span dir="ltr"><<a href="mailto:thejaka.amila@gmail.com" target="_blank">thejaka.amila@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">Hello,<br><br>Inside VarDecl constructor (Decl.cpp L1721 in Clang 3.6) there are 2 static assertions as follows;<br><div><br></div>VarDecl::VarDecl(Kind DK, ASTContext &C, DeclContext *DC,...) {<br><br>  static_assert(sizeof(VarDeclBitfields) <= sizeof(unsigned), <br>          "VarDeclBitfields too large!"); <div>  static_assert(sizeof(ParmVarDeclBitfields) <= sizeof(unsigned),<br>          "ParmVarDeclBitfields too large!");</div><div>  ...</div><div>}</div><div><br></div><div>I am trying to add an another field to VarDeclBitfields and it triggers second static assertion in above code. </div><div><br></div><div>Could you please explain why sizeof VarDeclBitfields and ParmVarDeclBitfields must be less than sizeof(unsigned) and also what are repercussions if I remove above assertions ?</div><div><br></div><div>Thanks</div><div>-Thejaka</div></div>
<br>_______________________________________________<br>
cfe-dev mailing list<br>
<a href="mailto:cfe-dev@cs.uiuc.edu">cfe-dev@cs.uiuc.edu</a><br>
<a href="http://lists.cs.uiuc.edu/mailman/listinfo/cfe-dev" target="_blank">http://lists.cs.uiuc.edu/mailman/listinfo/cfe-dev</a><br>
<br></blockquote></div><br></div>