[LLVMdev] Extended Inline asm with double data type crashes clang

Rafael EspĂ­ndola rafael.espindola at gmail.com
Tue Nov 20 13:08:30 PST 2012


I reported http://llvm.org/pr14393 to track it.

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



More information about the llvm-dev mailing list