<div id="comment_text_4" class="bz_comment_text"><font face="Arial">Hi all,</font></div>
<div class="bz_comment_text"> </div>
<div class="bz_comment_text"><font face="Arial">I tried same code on gcc for arm(hard float),</font></div>
<div class="bz_comment_text"><font face="Arial"></font> </div>
<div class="bz_comment_text"><font face="Arial">double f2 ()<br>{<br>double x = 10.0;<br>asm ("" : "=r" (x) : "0" (x));<br>return x;<br>}</font></div>
<div class="bz_comment_text"><font face="Arial"></font> </div>
<div class="bz_comment_text"><font face="Arial">> arm-linux-gnueabi-gcc -S -mhard-float pr39058.c -O2</font></div>
<div class="bz_comment_text"><font face="Arial"></font> </div>
<div class="bz_comment_text"><font face="Arial">Generates proper code,<br>    mov    r3, #0<br>    mov    r2, #0<br>    movt    r3, 16420<br>    fmdrr    d0, r2, r3<br>    bx    lr</font></div>
<div class="bz_comment_text"> </div>
<div class="bz_comment_text">But llvm crashes, If data type is "double", register type is "int".</div>
<div class="bz_comment_text">Any comments why does llvm currently handle this case ?</div>
<div class="bz_comment_text"> </div>
<div class="bz_comment_text"> </div>
<div class="bz_comment_text"> </div>
<div class="bz_comment_text">Regards,</div>
<div class="bz_comment_text">Rajesh</div><br>
<div class="gmail_quote">On Wed, Nov 21, 2012 at 3:19 PM, rajesh viswabramana <span dir="ltr"><<a href="mailto:viswabramana.rajesh@gmail.com" target="_blank">viswabramana.rajesh@gmail.com</a>></span> wrote:<br>
<blockquote style="BORDER-LEFT:#ccc 1px solid;MARGIN:0px 0px 0px 0.8ex;PADDING-LEFT:1ex" class="gmail_quote">
<div>Thanks Rafael,</div>
<div> </div>
<div>Hello All,</div>
<div> </div>
<div>Could anyone please comment, which part in selectiondag need to be understood/modified to fix this.</div>
<div> </div>
<div>Regards,</div>
<div>Rajesh </div>
<div class="HOEnZb">
<div class="h5">
<div> </div>
<div><br><br> </div>
<div class="gmail_quote">On Wed, Nov 21, 2012 at 2:38 AM, Rafael Espíndola <span dir="ltr"><<a href="mailto:rafael.espindola@gmail.com" target="_blank">rafael.espindola@gmail.com</a>></span> wrote:<br>
<blockquote style="BORDER-LEFT:#ccc 1px solid;MARGIN:0px 0px 0px 0.8ex;PADDING-LEFT:1ex" class="gmail_quote">I reported <a href="http://llvm.org/pr14393" target="_blank">http://llvm.org/pr14393</a> to track it.<br><br>On 20 November 2012 05:18, rajesh viswabramana<br>

<div>
<div><<a href="mailto:viswabramana.rajesh@gmail.com" target="_blank">viswabramana.rajesh@gmail.com</a>> wrote:<br>> Hi,<br>><br>> Clang crashes when below snippet of code is compiled (used latest svn<br>> version)<br>
><br>> double func1()<br>> {<br>>   double x ;<br>>   asm ( "" : "=r"(x) : "0"(x) );<br>>   return x;<br>> }<br>><br>>> clang -S test1.c<br>>> Assertion failed: (PartVT.isInteger() || PartVT == MVT::x86mmx) &&<br>
>> ValueVT.isInteger() && "Unknown mismatch!", file<br>>> ..\..\..\..\lib\CodeGen\SelectionDAG\SelectionDAGBuilder.cpp, line 378<br>><br>><br>> Compilation sucessful, If data type passed to inline asm is of float<br>
>   float x ;<br>>   asm ( "" : "=r"(x) : "0"(x) );<br>><br>> (or) If double data type passed to float type of registers<br>> double x;<br>> asm ( "" : "=t"(x) : "0"(x) );<br>
><br>> It seems currently LLVM (selectionDAG) doesn't handle double to general<br>> purpose register storing.<br>> Could anyone please comment on this.<br>><br>> Regards,<br>> Rajesh<br>><br>><br>
><br></div></div>> _______________________________________________<br>> LLVM Developers mailing list<br>> <a href="mailto:LLVMdev@cs.uiuc.edu" target="_blank">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></div></blockquote></div><br>