<div dir="ltr"><div dir="ltr"><div dir="ltr"><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left-width:1px;border-left-style:solid;border-left-color:rgb(204,204,204);padding-left:1ex">Given the replies from David and Reid are you ok with changing the code?</blockquote><div dir="ltr"><br></div><div dir="ltr">Yes -- especially in light of MSVC's behavior. (Thanks for the tip Reid!) <div><div><br></div><div>Fixed in r362450.</div><div><br></div><div>-- Lang.</div></div></div></div><br><div class="gmail_quote"><div dir="ltr" class="gmail_attr">On Mon, Jun 3, 2019 at 11:58 AM Bakhvalov, Denis <<a href="mailto:denis.bakhvalov@intel.com">denis.bakhvalov@intel.com</a>> wrote:<br></div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left-width:1px;border-left-style:solid;border-left-color:rgb(204,204,204);padding-left:1ex">





<div lang="PL">
<div class="gmail-m_-670493775865380216WordSection1">
<p class="MsoNormal"><span lang="EN-US" style="font-size:11pt;font-family:Calibri,sans-serif;color:rgb(31,73,125)">Hello Lang,<br>
<br>
Given the replies from David and Reid are you ok with changing the code?<u></u><u></u></span></p>
<p class="MsoNormal"><span lang="EN-US" style="font-size:11pt;font-family:Calibri,sans-serif;color:rgb(31,73,125)"><u></u> <u></u></span></p>
<p class="MsoNormal"><span lang="EN-US" style="font-size:11pt;font-family:Calibri,sans-serif;color:rgb(31,73,125)">Best regards,<br>
Denis Bakhvalov.<u></u><u></u></span></p>
<p class="MsoNormal"><span lang="EN-US" style="font-size:11pt;font-family:Calibri,sans-serif;color:rgb(31,73,125)"><u></u> <u></u></span></p>
<p class="MsoNormal"><b><span lang="EN-US" style="font-size:11pt;font-family:Calibri,sans-serif">From:</span></b><span lang="EN-US" style="font-size:11pt;font-family:Calibri,sans-serif"> David Blaikie [mailto:<a href="mailto:dblaikie@gmail.com" target="_blank">dblaikie@gmail.com</a>]
<br>
<b>Sent:</b> Friday, May 31, 2019 1:17 PM<br>
<b>To:</b> Reid Kleckner <<a href="mailto:rnk@google.com" target="_blank">rnk@google.com</a>><br>
<b>Cc:</b> Lang Hames <<a href="mailto:lhames@gmail.com" target="_blank">lhames@gmail.com</a>>; <a href="mailto:llvm-dev@lists.llvm.org" target="_blank">llvm-dev@lists.llvm.org</a>; Bakhvalov, Denis <<a href="mailto:denis.bakhvalov@intel.com" target="_blank">denis.bakhvalov@intel.com</a>><br>
<b>Subject:</b> Re: [llvm-dev] Commit 93af05e03e05d2f85b5a7e20ec3a3a543584d84f causes warning<u></u><u></u></span></p>
<p class="MsoNormal"><u></u> <u></u></p>
<div>
<p class="MsoNormal">Isn't there something weird with signedness of bitfields-of-enums in particular in MSVC too?<u></u><u></u></p>
</div>
<p class="MsoNormal"><u></u> <u></u></p>
<div>
<div>
<p class="MsoNormal">On Fri, May 31, 2019 at 1:06 PM Reid Kleckner via llvm-dev <<a href="mailto:llvm-dev@lists.llvm.org" target="_blank">llvm-dev@lists.llvm.org</a>> wrote:<u></u><u></u></p>
</div>
<blockquote style="border-style:none none none solid;border-left-width:1pt;border-left-color:rgb(204,204,204);padding:0in 0in 0in 6pt;margin-left:4.8pt;margin-right:0in">
<div>
<p class="MsoNormal">Generally it is preferable to store bitfields using plain integer types because MSVC has surprising behavior when packing bitfields of differing type. MSVC, for example, will not back this into one byte:<u></u><u></u></p>
<div>
<p class="MsoNormal">  bool a : 1;<u></u><u></u></p>
</div>
<div>
<p class="MsoNormal">  uint8_t b : 2;<u></u><u></u></p>
</div>
<div>
<p class="MsoNormal">  bool c : 1;<u></u><u></u></p>
</div>
<div>
<p class="MsoNormal">So, for LLVM or any other cross platform project, I recommend storing enums as some integer type, using the same type for all bitfields, and adding accessors to do the casts.<u></u><u></u></p>
</div>
</div>
<p class="MsoNormal"><u></u> <u></u></p>
<div>
<div>
<p class="MsoNormal">On Fri, May 31, 2019 at 12:40 PM Lang Hames via llvm-dev <<a href="mailto:llvm-dev@lists.llvm.org" target="_blank">llvm-dev@lists.llvm.org</a>> wrote:<u></u><u></u></p>
</div>
<blockquote style="border-style:none none none solid;border-left-width:1pt;border-left-color:rgb(204,204,204);padding:0in 0in 0in 6pt;margin-left:4.8pt;margin-right:0in">
<div>
<p class="MsoNormal">Hi Denis,<u></u><u></u></p>
<div>
<p class="MsoNormal"><u></u> <u></u></p>
</div>
<div>
<p class="MsoNormal">It is unfortunate that GCC has added such an aggressive warning with no way to disable it. I would definitely make a comment on their bug tracker that you have hit this.<u></u><u></u></p>
<div>
<p class="MsoNormal"><u></u> <u></u></p>
</div>
<div>
<p class="MsoNormal">We could work around this by changing the field type to uint8_t and adding casts, but I'm not sure whether we want to work around warnings in other compilers as a matter of policy.<u></u><u></u></p>
</div>
<div>
<p class="MsoNormal"><u></u> <u></u></p>
</div>
<div>
<p class="MsoNormal">Anyone else have thoughts on style here?<u></u><u></u></p>
</div>
<div>
<p class="MsoNormal"><u></u> <u></u></p>
</div>
<div>
<p class="MsoNormal">Cheers,<u></u><u></u></p>
</div>
<div>
<p class="MsoNormal">Lang.<u></u><u></u></p>
</div>
</div>
</div>
<p class="MsoNormal"><u></u> <u></u></p>
<div>
<div>
<p class="MsoNormal">On Fri, May 31, 2019 at 10:54 AM Bakhvalov, Denis <<a href="mailto:denis.bakhvalov@intel.com" target="_blank">denis.bakhvalov@intel.com</a>> wrote:<u></u><u></u></p>
</div>
<blockquote style="border-style:none none none solid;border-left-width:1pt;border-left-color:rgb(204,204,204);padding:0in 0in 0in 6pt;margin-left:4.8pt;margin-right:0in">
<div>
<div>
<p class="MsoNormal" style="margin-bottom:12pt"><span lang="EN-US">Hello,<br>
<br>
After commit 93af05e03e05d2f85b5a7e20ec3a3a543584d84f we have new warning but only if compiled with GCC:</span><u></u><u></u></p>
<p class="MsoNormal"><span lang="EN-US">In file included from /path/to/llvm/include/llvm/ExecutionEngine/Orc/ExecutionUtils.h:19:0,</span><u></u><u></u></p>
<p class="MsoNormal"><span lang="EN-US">                 from /path/to/llvm/lib/ExecutionEngine/Orc/OrcMCJITReplacement.h:23,</span><u></u><u></u></p>
<p class="MsoNormal"><span lang="EN-US">                 from /path/to/llvm/lib/ExecutionEngine/Orc/OrcMCJITReplacement.cpp:9:</span><u></u><u></u></p>
<p class="MsoNormal"><span lang="EN-US">/path/to/llvm/include/llvm/ExecutionEngine/Orc/Core.h:690:25: warning: ‘llvm::orc::JITDylib::SymbolTableEntry::State’ is too small to hold all values of ‘enum
 class llvm::orc::JITDylib::SymbolState’</span><u></u><u></u></p>
<p class="MsoNormal"><span lang="EN-US">     SymbolState State : 6;</span><u></u><u></u></p>
<p class="MsoNormal"><span lang="EN-US"> </span><u></u><u></u></p>
<p class="MsoNormal"><span lang="EN-US">There is no GCC option for disabling this warning:
<a href="https://gcc.gnu.org/bugzilla/show_bug.cgi?id=61414" target="_blank"><span style="font-size:10.5pt;font-family:"Segoe UI",sans-serif;color:rgb(3,102,214);background-color:white;text-decoration:none">https://gcc.gnu.org/bugzilla/show_bug.cgi?id=61414</span></a></span><u></u><u></u></p>
<p class="MsoNormal"><span lang="EN-US">The issue is that now LLVM is not buildable with GCC and ‘-Werror’ enabled.</span><u></u><u></u></p>
<p class="MsoNormal"><span lang="EN-US"> </span><u></u><u></u></p>
<p class="MsoNormal"><span lang="EN-US">In addition, LLVM gcc-werror buildbot seems to be offline since May 9th:<br>
<a href="http://lab.llvm.org:8011/builders/ubuntu-gcc7.1-werror" target="_blank">http://lab.llvm.org:8011/builders/ubuntu-gcc7.1-werror</a></span><u></u><u></u></p>
<p class="MsoNormal"><span lang="EN-US"> </span><u></u><u></u></p>
<p class="MsoNormal"><span lang="EN-US">I understand that changing the code to satisfy GCC requirements might not be desired, but I think this is something that we should do.</span><u></u><u></u></p>
<p class="MsoNormal"><span lang="EN-US"> </span><u></u><u></u></p>
<p class="MsoNormal"><span lang="EN-US">Best regards,<br>
Denis Bakhvalov.</span><u></u><u></u></p>
<p class="MsoNormal"><span lang="EN-US"> </span><u></u><u></u></p>
</div>
</div>
</blockquote>
</div>
<p class="MsoNormal">_______________________________________________<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" target="_blank">https://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-dev</a><u></u><u></u></p>
</blockquote>
</div>
<p class="MsoNormal">_______________________________________________<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" target="_blank">https://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-dev</a><u></u><u></u></p>
</blockquote>
</div>
</div>
</div>

</blockquote></div></div></div>