<div dir="ltr">Yes, this is the way to go.  Without an explicit integer type, MSVC always picks "int" to represent the enum, which is signed.  The only way to avoid this is to use C++11 strong enums, which we can do unconditionally now.<div>
<br></div><div>We can also apply this to GlobalValue, I believe.</div></div><div class="gmail_extra"><br><br><div class="gmail_quote">On Thu, Mar 20, 2014 at 12:30 PM, Gordon Keiser <span dir="ltr"><<a href="mailto:gkeiser@arxan.com" target="_blank">gkeiser@arxan.com</a>></span> wrote:<br>
<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div lang="EN-US" link="#0563C1" vlink="#954F72"><div><p class="MsoNormal"><span style="font-size:11.0pt;font-family:"Calibri","sans-serif";color:#1f497d">I’m not sure what the original symptoms of this were, a quick build changing the enum definition to <u></u><u></u></span></p>
<p class="MsoNormal"><span style="font-size:11.0pt;font-family:"Calibri","sans-serif";color:#1f497d"><u></u> <u></u></span></p><p class="MsoNormal"><span style="font-size:11.0pt;font-family:"Calibri","sans-serif";color:#1f497d">enum fltCategory : unsigned { <u></u><u></u></span></p>
<p class="MsoNormal"><span style="font-size:11.0pt;font-family:"Calibri","sans-serif";color:#1f497d"><u></u> <u></u></span></p><p class="MsoNormal"><span style="font-size:11.0pt;font-family:"Calibri","sans-serif";color:#1f497d">and the bitfield to 2 bits didn’t produce any immediately obvious problems in the bitcode or output assembly with various floats in use.  I don’t have time to run more tests against it ATM.   Since this is C++11 compatible and probably more correct, anyway, it seems like the way to do it.  <u></u><u></u></span></p>
<p class="MsoNormal"><span style="font-size:11.0pt;font-family:"Calibri","sans-serif";color:#1f497d"><u></u> <u></u></span></p><p class="MsoNormal"><span style="font-size:11.0pt;font-family:"Calibri","sans-serif";color:#1f497d">-Gordon<u></u><u></u></span></p>
<p class="MsoNormal"><span style="font-size:11.0pt;font-family:"Calibri","sans-serif";color:#1f497d"><u></u> <u></u></span></p><div><div style="border:none;border-top:solid #e1e1e1 1.0pt;padding:3.0pt 0in 0in 0in">
<p class="MsoNormal"><b><span style="font-size:11.0pt;font-family:"Calibri","sans-serif"">From:</span></b><span style="font-size:11.0pt;font-family:"Calibri","sans-serif""> <a href="mailto:llvmdev-bounces@cs.uiuc.edu" target="_blank">llvmdev-bounces@cs.uiuc.edu</a> [mailto:<a href="mailto:llvmdev-bounces@cs.uiuc.edu" target="_blank">llvmdev-bounces@cs.uiuc.edu</a>] <b>On Behalf Of </b>Gordon Keiser<br>
<b>Sent:</b> Tuesday, March 18, 2014 2:35 PM<br><b>To:</b> Pete Cooper; LLVM Developers Mailing List<br><b>Subject:</b> Re: [LLVMdev] Virtual Studio hack in APFloat.h<u></u><u></u></span></p></div></div><div><div class="h5">
<p class="MsoNormal"><u></u> <u></u></p><p class="MsoNormal"><span style="font-size:11.0pt;font-family:"Calibri","sans-serif";color:#1f497d">The comment on this says: <br><br>  /// Only 2 bits are required, but VisualStudio incorrectly sign extends it.<u></u><u></u></span></p>
<p class="MsoNormal"><span style="font-size:11.0pt;font-family:"Calibri","sans-serif";color:#1f497d">  /// Using the extra bit keeps it from failing under VisualStudio.<u></u><u></u></span></p><p class="MsoNormal">
<span style="font-size:11.0pt;font-family:"Calibri","sans-serif";color:#1f497d">  fltCategory category : 3;<u></u><u></u></span></p><p class="MsoNormal"><span style="font-size:11.0pt;font-family:"Calibri","sans-serif";color:#1f497d"><u></u> <u></u></span></p>
<p class="MsoNormal"><span style="font-size:11.0pt;font-family:"Calibri","sans-serif";color:#1f497d">Which I don’t think is correct, since the standard doesn’t specify whether a pre-C++11 (untyped) enum needs to be signed or unsigned.   Specifying the enum as enum unsigned should work for VS2012, I can try this a bit later and see if it works. <u></u><u></u></span></p>
<p class="MsoNormal"><span style="font-size:11.0pt;font-family:"Calibri","sans-serif";color:#1f497d"><u></u> <u></u></span></p><p class="MsoNormal"><span style="font-size:11.0pt;font-family:"Calibri","sans-serif";color:#1f497d">-Gordon<u></u><u></u></span></p>
<p class="MsoNormal"><span style="font-size:11.0pt;font-family:"Calibri","sans-serif";color:#1f497d"><u></u> <u></u></span></p><div><div style="border:none;border-top:solid #e1e1e1 1.0pt;padding:3.0pt 0in 0in 0in">
<p class="MsoNormal"><b><span style="font-size:11.0pt;font-family:"Calibri","sans-serif"">From:</span></b><span style="font-size:11.0pt;font-family:"Calibri","sans-serif""> <a href="mailto:llvmdev-bounces@cs.uiuc.edu" target="_blank">llvmdev-bounces@cs.uiuc.edu</a> [<a href="mailto:llvmdev-bounces@cs.uiuc.edu" target="_blank">mailto:llvmdev-bounces@cs.uiuc.edu</a>] <b>On Behalf Of </b>Pete Cooper<br>
<b>Sent:</b> Tuesday, March 18, 2014 2:15 PM<br><b>To:</b> LLVM Developers Mailing List<br><b>Subject:</b> [LLVMdev] Virtual Studio hack in APFloat.h<u></u><u></u></span></p></div></div><p class="MsoNormal"><u></u> <u></u></p>
<p class="MsoNormal">Hi all<u></u><u></u></p><div><p class="MsoNormal"><u></u> <u></u></p></div><div><p class="MsoNormal">APFloat.h contains this code, which was required for Visual Studio builds.<u></u><u></u></p></div><div>
<p class="MsoNormal"><u></u> <u></u></p></div><div><p class="MsoNormal">Given that this was committed in r41784 (2007), does anyone know if newer versions work?  I think after moving to C++11 we’re on VS2013 at a minimum?  I’d have hoped it would be more likely to work.<u></u><u></u></p>
</div><div><p class="MsoNormal"><u></u> <u></u></p></div><div><p class="MsoNormal">Thanks,<u></u><u></u></p></div><div><p class="MsoNormal">Pete<u></u><u></u></p></div><div><p class="MsoNormal"><u></u> <u></u></p></div><div>
<div><p class="MsoNormal"><span style="font-size:8.5pt;font-family:"Menlo","serif"">  </span><span style="font-size:8.5pt;font-family:"Menlo","serif";color:#008400">/// What kind of floating point number this is.<u></u><u></u></span></p>
</div><div><p class="MsoNormal"><span style="font-size:8.5pt;font-family:"Menlo","serif"">  </span><span style="font-size:8.5pt;font-family:"Menlo","serif";color:#008400">///<u></u><u></u></span></p>
</div><div><p class="MsoNormal"><span style="font-size:8.5pt;font-family:"Menlo","serif"">  </span><span style="font-size:8.5pt;font-family:"Menlo","serif";color:#008400">/// Only 2 bits are required, but VisualStudio incorrectly sign extends it.<u></u><u></u></span></p>
</div><div><p class="MsoNormal"><span style="font-size:8.5pt;font-family:"Menlo","serif"">  </span><span style="font-size:8.5pt;font-family:"Menlo","serif";color:#008400">/// Using the extra bit keeps it from failing under VisualStudio.<u></u><u></u></span></p>
</div><div><p class="MsoNormal"><span style="font-size:8.5pt;font-family:"Menlo","serif"">  <span style="color:#4f8187">fltCategory</span> category : <span style="color:#272ad8">3</span>;<u></u><u></u></span></p>
</div></div></div></div></div></div><br>_______________________________________________<br>
LLVM Developers mailing list<br>
<a href="mailto:LLVMdev@cs.uiuc.edu">LLVMdev@cs.uiuc.edu</a>         <a href="http://llvm.cs.uiuc.edu" target="_blank">http://llvm.cs.uiuc.edu</a><br>
<a href="http://lists.cs.uiuc.edu/mailman/listinfo/llvmdev" target="_blank">http://lists.cs.uiuc.edu/mailman/listinfo/llvmdev</a><br>
<br></blockquote></div><br></div>