<html xmlns:v="urn:schemas-microsoft-com:vml" xmlns:o="urn:schemas-microsoft-com:office:office" xmlns:w="urn:schemas-microsoft-com:office:word" xmlns:st1="urn:schemas-microsoft-com:office:smarttags" xmlns="http://www.w3.org/TR/REC-html40">

<head>
<META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=us-ascii">
<meta name=Generator content="Microsoft Word 11 (filtered medium)">
<!--[if !mso]>
<style>
v\:* {behavior:url(#default#VML);}
o\:* {behavior:url(#default#VML);}
w\:* {behavior:url(#default#VML);}
.shape {behavior:url(#default#VML);}
</style>
<![endif]--><o:SmartTagType
 namespaceuri="urn:schemas-microsoft-com:office:smarttags" name="PersonName"/>
<!--[if !mso]>
<style>
st1\:*{behavior:url(#default#ieooui) }
</style>
<![endif]-->
<style>
<!--
 /* Font Definitions */
 @font-face
        {font-family:Tahoma;
        panose-1:2 11 6 4 3 5 4 4 2 4;}
 /* Style Definitions */
 p.MsoNormal, li.MsoNormal, div.MsoNormal
        {margin:0in;
        margin-bottom:.0001pt;
        font-size:12.0pt;
        font-family:"Times New Roman";}
a:link, span.MsoHyperlink
        {color:blue;
        text-decoration:underline;}
a:visited, span.MsoHyperlinkFollowed
        {color:blue;
        text-decoration:underline;}
span.EmailStyle17
        {mso-style-type:personal;
        font-family:Arial;
        color:navy;}
span.EmailStyle19
        {mso-style-type:personal-reply;
        font-family:Arial;
        color:navy;}
@page Section1
        {size:8.5in 11.0in;
        margin:1.0in 1.25in 1.0in 1.25in;}
div.Section1
        {page:Section1;}
-->
</style>

</head>

<body lang=EN-US link=blue vlink=blue style='word-wrap: break-word;-khtml-nbsp-mode: space;
-khtml-line-break: after-white-space'>

<div class=Section1>

<p class=MsoNormal><font size=2 color=navy face=Arial><span style='font-size:
10.0pt;font-family:Arial;color:navy'>Hola Dale,<o:p></o:p></span></font></p>

<p class=MsoNormal><font size=2 color=navy face=Arial><span style='font-size:
10.0pt;font-family:Arial;color:navy'><o:p> </o:p></span></font></p>

<p class=MsoNormal><font size=2 color=navy face=Arial><span style='font-size:
10.0pt;font-family:Arial;color:navy'>I spent some time walking through what’s
going on with a friend of mine from VStudio.  Category is given 2 bits in the
APFloat class definition.  It’s sign extending the enum value for the
comparisons when it loads it out of the class, so the 2 becomes a -2 and the
comparison fails.  He sent me a piece of code which I might be able to use to
force the issue.  I’ll update when I try that out. <o:p></o:p></span></font></p>

<p class=MsoNormal><font size=2 color=navy face=Arial><span style='font-size:
10.0pt;font-family:Arial;color:navy'><o:p> </o:p></span></font></p>

<p class=MsoNormal><font size=2 color=navy face=Arial><span style='font-size:
10.0pt;font-family:Arial;color:navy'>Thanks,<o:p></o:p></span></font></p>

<p class=MsoNormal><font size=2 color=navy face=Arial><span style='font-size:
10.0pt;font-family:Arial;color:navy'>Chuck.<o:p></o:p></span></font></p>

<p class=MsoNormal><font size=2 color=navy face=Arial><span style='font-size:
10.0pt;font-family:Arial;color:navy'><o:p> </o:p></span></font></p>

<div>

<div class=MsoNormal align=center style='text-align:center'><font size=3
face="Times New Roman"><span style='font-size:12.0pt'>

<hr size=2 width="100%" align=center tabindex=-1>

</span></font></div>

<p class=MsoNormal><b><font size=2 face=Tahoma><span style='font-size:10.0pt;
font-family:Tahoma;font-weight:bold'>From:</span></font></b><font size=2
face=Tahoma><span style='font-size:10.0pt;font-family:Tahoma'> llvmdev-bounces@cs.uiuc.edu
[mailto:llvmdev-bounces@cs.uiuc.edu] <b><span style='font-weight:bold'>On
Behalf Of </span></b>Chuck Rose III<br>
<b><span style='font-weight:bold'>Sent:</span></b> Wednesday, September 05,
2007 2:51 PM<br>
<b><span style='font-weight:bold'>To:</span></b> <st1:PersonName w:st="on">LLVM
 Developers Mailing List</st1:PersonName><br>
<b><span style='font-weight:bold'>Subject:</span></b> Re: [LLVMdev] Seeing a
crash with ConstantFP::get</span></font><o:p></o:p></p>

</div>

<p class=MsoNormal><font size=3 face="Times New Roman"><span style='font-size:
12.0pt'><o:p> </o:p></span></font></p>

<p class=MsoNormal><font size=2 color=navy face=Arial><span style='font-size:
10.0pt;font-family:Arial;color:navy'>It’s in debug.  I’m
having a look at the assembler it’s producing right now and it’s
definitely a little odd for what should be a simple assignment in
zeroSignificand. <o:p></o:p></span></font></p>

<p class=MsoNormal><font size=2 color=navy face=Arial><span style='font-size:
10.0pt;font-family:Arial;color:navy'><o:p> </o:p></span></font></p>

<div>

<div class=MsoNormal align=center style='text-align:center'><font size=3
face="Times New Roman"><span style='font-size:12.0pt'>

<hr size=2 width="100%" align=center tabindex=-1>

</span></font></div>

<p class=MsoNormal><b><font size=2 face=Tahoma><span style='font-size:10.0pt;
font-family:Tahoma;font-weight:bold'>From:</span></font></b><font size=2
face=Tahoma><span style='font-size:10.0pt;font-family:Tahoma'>
llvmdev-bounces@cs.uiuc.edu [mailto:llvmdev-bounces@cs.uiuc.edu] <b><span
style='font-weight:bold'>On Behalf Of </span></b>Dale Johannesen<br>
<b><span style='font-weight:bold'>Sent:</span></b> Wednesday, September 05,
2007 2:39 PM<br>
<b><span style='font-weight:bold'>To:</span></b> <st1:PersonName w:st="on">LLVM
 Developers Mailing List</st1:PersonName><br>
<b><span style='font-weight:bold'>Subject:</span></b> Re: [LLVMdev] Seeing a
crash with ConstantFP::get</span></font><o:p></o:p></p>

</div>

<p class=MsoNormal><font size=3 face="Times New Roman"><span style='font-size:
12.0pt'><o:p> </o:p></span></font></p>

<p class=MsoNormal><font size=3 face="Times New Roman"><span style='font-size:
12.0pt'><o:p> </o:p></span></font></p>

<div>

<div>

<p class=MsoNormal><font size=3 face="Times New Roman"><span style='font-size:
12.0pt'>On Sep 5, 2007, at 2:21 PM, Chuck Rose III wrote:<o:p></o:p></span></font></p>

</div>

<p class=MsoNormal style='margin-bottom:12.0pt'><font size=3
face="Times New Roman"><span style='font-size:12.0pt'><o:p> </o:p></span></font></p>

<div>

<p class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto'><font
size=2 face=Arial><span style='font-size:10.0pt;font-family:Arial'>Hola
LLVMers,<o:p></o:p></span></font></p>

<p class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto'><font
size=2 face=Arial><span style='font-size:10.0pt;font-family:Arial'><o:p> </o:p></span></font></p>

<p class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto'><font
size=2 face=Arial><span style='font-size:10.0pt;font-family:Arial'>I’m
getting a crash when using ConstantFP::get.<o:p></o:p></span></font></p>

<p class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto'><font
size=2 face=Arial><span style='font-size:10.0pt;font-family:Arial'><o:p> </o:p></span></font></p>

<p class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto'><font
size=2 face=Arial><span style='font-size:10.0pt;font-family:Arial'>I can repro
it by adding one line to the Fibonacci example program:<o:p></o:p></span></font></p>

<p class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto'><font
size=2 face=Arial><span style='font-size:10.0pt;font-family:Arial'><o:p> </o:p></span></font></p>

<p class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;
text-autospace:none'><font size=2 color=blue face="Courier New"><span courier=""><span
style='font-size:10.0pt;font-family:"Courier New";color:blue'>int</span></span></font><font
size=2 face="Courier New"><span courier=""><span style='font-size:10.0pt;
font-family:"Courier New"'> main(<font color=blue><span style='color:blue'>int</span></font>
argc, <font color=blue><span style='color:blue'>char</span></font> **argv) {<o:p></o:p></span></font></p>

</span>

<p class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;
text-autospace:none'><font size=2 face="Courier New"><span courier=""><span
style='font-size:10.0pt;font-family:"Courier New"'>  <font color=blue><span
style='color:blue'>int</span></font> n = argc > 1 ? atol(argv[1]) : 24;<o:p></o:p></span></font></p>

</span>

<p class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;
text-autospace:none'><font size=2 face="Courier New"><span courier=""><span
style='font-size:10.0pt;font-family:"Courier New"'><o:p> </o:p></span></font></p>

</span>

<p class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;
text-autospace:none'><font size=2 face="Courier New"><span courier=""><span
style='font-size:10.0pt;font-family:"Courier New"'>  <font color=green><span
style='color:green'>// Create some module to put our function into it.<o:p></o:p></span></font></span></font></p>

</span>

<p class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;
text-autospace:none'><font size=2 face="Courier New"><span courier=""><span
style='font-size:10.0pt;font-family:"Courier New"'>  Module *M = <font
color=blue><span style='color:blue'>new</span></font> Module(<font
color=maroon><span style='color:maroon'>"test"</span></font>);<o:p></o:p></span></font></p>

</span>

<p class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;
text-autospace:none'><font size=2 face="Courier New"><span courier=""><span
style='font-size:10.0pt;font-family:"Courier New"'><o:p> </o:p></span></font></p>

</span>

<p class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;
text-autospace:none'><font size=2 face="Courier New"><span courier=""><span
style='font-size:10.0pt;font-family:"Courier New"'>  <font color=green><span
style='color:green'>// We are about to create the "fib" function:<o:p></o:p></span></font></span></font></p>

</span>

<p class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;
text-autospace:none'><font size=2 face="Courier New"><span courier=""><span
style='font-size:10.0pt;font-family:"Courier New"'>  Function *FibF =
CreateFibFunction(M);<o:p></o:p></span></font></p>

</span>

<p class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;
text-autospace:none'><font size=2 face="Courier New"><span courier=""><span
style='font-size:10.0pt;font-family:"Courier New"'><o:p> </o:p></span></font></p>

</span>

<p class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;
text-autospace:none'><font size=2 face="Courier New"><span courier=""><span
style='font-size:10.0pt;font-family:"Courier New"'>// add the following line<o:p></o:p></span></font></p>

</span>

<p class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;
text-autospace:none'><b><font size=2 face="Courier New"><span courier=""><span
style='font-size:10.0pt;font-family:"Courier New";font-weight:bold'> 
Constant* C = ConstantFP::get(Type::FloatTy,0.0);<o:p></o:p></span></font></b></p>

</span>

<p class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto'><font
size=2 face=Arial><span style='font-size:10.0pt;font-family:Arial'><o:p> </o:p></span></font></p>

<p class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto'><font
size=2 face=Arial><span style='font-size:10.0pt;font-family:Arial'><o:p> </o:p></span></font></p>

<p class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto'><font
size=2 face=Arial><span style='font-size:10.0pt;font-family:Arial'>Can someone
verify this?  This is on the PC side of my system which I build with the
VStudio files.  I don’t know if the Mac side sees this as well, but
I’ll try and verify.  Seems really odd to have something this basic
crash me.  It came up because the JITter will call ConstantFP::get with
the GenericValue arguments passed it, but the above repro is a lot simpler and
is independent of the JITter.<o:p></o:p></span></font></p>

<p class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto'><font
size=2 face=Arial><span style='font-size:10.0pt;font-family:Arial'><o:p> </o:p></span></font></p>

<p class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto'><font
size=2 face=Arial><span style='font-size:10.0pt;font-family:Arial'>My call stack
looks like this:<o:p></o:p></span></font></p>

<p class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto'><font
size=2 face=Arial><span style='font-size:10.0pt;font-family:Arial'><o:p> </o:p></span></font></p>

<p class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;
text-autospace:none'><font size=2 face=Arial><span style='font-size:10.0pt;
font-family:Arial'>           
in here it fails this:</span></font><font size=2 face="Courier New"><span
courier=""><span style='font-size:10.0pt;font-family:"Courier New"'> 
assert(category == fcNormal || category == fcNaN);<o:p></o:p></span></font></p>

</span>

<p class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto'><font
size=2 face=Arial><span style='font-size:10.0pt;font-family:Arial'>           
Fibonacci.exe!llvm::APFloat::significandParts()  Line 360 + 0x39
bytes    C++<o:p></o:p></span></font></p>

<p class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto'><font
size=2 face=Arial><span style='font-size:10.0pt;font-family:Arial'>           
Fibonacci.exe!llvm::APFloat::zeroSignificand()  Line 387 + 0x15
bytes     C++</span></font><o:p></o:p></p>

</div>

<div>

<p class=MsoNormal><font size=3 face="Times New Roman"><span style='font-size:
12.0pt'>I've been working in this area and probably introduced this, but I
don't see how:  zeroSignificand() sets 'category' to fcNormal before
calling significandParts, so I don't see how that assert could be
triggered.   The call stack looks normal for that source line. 
It doesn't appear on the Mac.   Could your compiler be misoptimizing
the code?<o:p></o:p></span></font></p>

</div>

<blockquote style='margin-top:5.0pt;margin-bottom:5.0pt' type=cite>

<div>

<p class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto'><font
size=2 face=Arial><span style='font-size:10.0pt;font-family:Arial'> 
        
 Fibonacci.exe!llvm::APFloat::APFloat(const llvm::fltSemantics &
ourSemantics={...}, unsigned __int64 value=1)  Line
307       C++<o:p></o:p></span></font></p>

<p class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto'><font
size=2 face=Arial><span style='font-size:10.0pt;font-family:Arial'>           
Fibonacci.exe!`anonymous
namespace'::DenseMapAPFloatKeyInfo::getEmptyKey()  Line 277 + 0x11
bytes         C++<o:p></o:p></span></font></p>

<p class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto'><font
size=2 face=Arial><span style='font-size:10.0pt;font-family:Arial'>           
Fibonacci.exe!llvm::DenseMap<`anonymous
namespace'::DenseMapAPFloatKeyInfo::KeyTy,llvm::ConstantFP *,A0x5b1fa632::DenseMapAPFloatKeyInfo>::getEmptyKey() 
Line 236 + 0x9 bytes          C++<o:p></o:p></span></font></p>

<p class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto'><font
size=2 face=Arial><span style='font-size:10.0pt;font-family:Arial'>           
Fibonacci.exe!llvm::DenseMap<`anonymous
namespace'::DenseMapAPFloatKeyInfo::KeyTy,llvm::ConstantFP
*,A0x5b1fa632::DenseMapAPFloatKeyInfo>::init(unsigned int InitBuckets=64) 
Line 295 + 0x9 bytes         C++<o:p></o:p></span></font></p>

<p class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto'><font
size=2 face=Arial><span style='font-size:10.0pt;font-family:Arial'>           
Fibonacci.exe!llvm::DenseMap<`anonymous
namespace'::DenseMapAPFloatKeyInfo::KeyTy,llvm::ConstantFP
*,A0x5b1fa632::DenseMapAPFloatKeyInfo>::DenseMap<`anonymous
namespace'::DenseMapAPFloatKeyInfo::KeyTy,llvm::ConstantFP
*,A0x5b1fa632::DenseMapAPFloatKeyInfo>(unsigned int NumInitBuckets=64) 
Line 68      C++<o:p></o:p></span></font></p>

<p class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto'><font
size=2 face=Arial><span style='font-size:10.0pt;font-family:Arial'>           
Fibonacci.exe!llvm::ManagedStatic<llvm::DenseMap<`anonymous
namespace'::DenseMapAPFloatKeyInfo::KeyTy,llvm::ConstantFP
*,A0x5b1fa632::DenseMapAPFloatKeyInfo> >::LazyInit()  Line 72 + 0x24
bytes     C++<o:p></o:p></span></font></p>

<p class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto'><font
size=2 face=Arial><span style='font-size:10.0pt;font-family:Arial'>           
Fibonacci.exe!llvm::ManagedStatic<llvm::DenseMap<`anonymous
namespace'::DenseMapAPFloatKeyInfo::KeyTy,llvm::ConstantFP
*,A0x5b1fa632::DenseMapAPFloatKeyInfo> >::operator*()  Line 55 
C++<o:p></o:p></span></font></p>

<p class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto'><font
size=2 face=Arial><span style='font-size:10.0pt;font-family:Arial'>           
Fibonacci.exe!llvm::ConstantFP::get(const llvm::Type * Ty=0x01b352d8, double
V=0.00000000000000000)  Line 299 + 0xe
bytes          C++<o:p></o:p></span></font></p>

<p class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto'><font
size=2 face=Arial><span style='font-size:10.0pt;font-family:Arial'>           
Fibonacci.exe!main(int argc=1, char * * argv=0x01b35060)  Line 99 + 0x13
bytes  C++<o:p></o:p></span></font></p>

<p class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto'><font
size=2 face=Arial><span style='font-size:10.0pt;font-family:Arial'>           
Fibonacci.exe!__tmainCRTStartup()  Line 586 + 0x19
bytes         C<o:p></o:p></span></font></p>

<p class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto'><font
size=2 face=Arial><span style='font-size:10.0pt;font-family:Arial'>           
Fibonacci.exe!mainCRTStartup()  Line
403          C<o:p></o:p></span></font></p>

<p class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto'><font
size=2 face=Arial><span style='font-size:10.0pt;font-family:Arial'><o:p> </o:p></span></font></p>

<p class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto'><font
size=2 face=Arial><span style='font-size:10.0pt;font-family:Arial'>Thanks,<o:p></o:p></span></font></p>

<p class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto'><font
size=2 face=Arial><span style='font-size:10.0pt;font-family:Arial'>Chuck.<o:p></o:p></span></font></p>

</div>

<div>

<p class=MsoNormal><font size=3 face="Times New Roman"><span style='font-size:
12.0pt'>_______________________________________________<o:p></o:p></span></font></p>

</div>

<div>

<p class=MsoNormal><font size=3 face="Times New Roman"><span style='font-size:
12.0pt'>LLVM Developers mailing list<o:p></o:p></span></font></p>

</div>

<div>

<p class=MsoNormal><font size=3 face="Times New Roman"><span style='font-size:
12.0pt'><a href="mailto:LLVMdev@cs.uiuc.edu">LLVMdev@cs.uiuc.edu</a> <span
class=apple-converted-space>        </span><a
href="http://llvm.cs.uiuc.edu">http://llvm.cs.uiuc.edu</a><o:p></o:p></span></font></p>

</div>

<div>

<p class=MsoNormal><font size=3 face="Times New Roman"><span style='font-size:
12.0pt'><a href="http://lists.cs.uiuc.edu/mailman/listinfo/llvmdev">http://lists.cs.uiuc.edu/mailman/listinfo/llvmdev</a><o:p></o:p></span></font></p>

</div>

</blockquote>

</div>

<p class=MsoNormal><font size=3 face="Times New Roman"><span style='font-size:
12.0pt'><o:p> </o:p></span></font></p>

</div>

</body>

</html>