<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="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]-->
<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.EmailStyle18
        {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'>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> LLVM Developers Mailing List<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><font size=3 face="Times New Roman"><span style='font-size:
12.0pt'><br>
<br>
<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><o:p></o:p></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><o:p></o:p></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><o:p></o:p></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><o:p></o:p></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><o:p></o:p></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><o:p></o:p></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></span></font><o:p></o:p></p>

<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></span></font><o:p></o:p></p>

<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=""><O:P><span
style='font-size:10.0pt;font-family:"Courier New"'> </O:P></span></span></font><o:p></o:p></p>

<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></span></font><o:p></o:p></p>

<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></span></font><o:p></o:p></p>

<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=""><O:P><span
style='font-size:10.0pt;font-family:"Courier New"'> </O:P></span></span></font><o:p></o:p></p>

<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></span></font><o:p></o:p></p>

<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></span></font><o:p></o:p></p>

<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=""><O:P><span
style='font-size:10.0pt;font-family:"Courier New"'> </O:P></span></span></font><o:p></o:p></p>

<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></span></font><o:p></o:p></p>

<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></span></font></b><o:p></o:p></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><o:p></o:p></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><o:p></o:p></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><o:p></o:p></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><o:p></o:p></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><o:p></o:p></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><o:p></o:p></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></span></font><o:p></o:p></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::significandParts()  Line 360 + 0x39
bytes    C++<O:P></O:P></span></font><o:p></o:p></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><o:p></o:p></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><o:p></o:p></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><o:p></o:p></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><o:p></o:p></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><o:p></o:p></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><o:p></o:p></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><o:p></o:p></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><o:p></o:p></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><o:p></o:p></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><o:p></o:p></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><o:p></o:p></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><o:p></o:p></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><o:p></o:p></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><o:p></o:p></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>