[llvm-bugs] [Bug 13200] Assertion failed: (Verify(getFunctionType(), constraints) && "Function type not legal for constraints!"), function InlineAsm, file /Users/lorca/src/llvm/lib/VMCore/InlineAsm.cpp, line 46.
via llvm-bugs
llvm-bugs at lists.llvm.org
Mon Apr 11 08:33:14 PDT 2016
https://llvm.org/bugs/show_bug.cgi?id=13200
Renato Golin <renato.golin at linaro.org> changed:
What |Removed |Added
----------------------------------------------------------------------------
Status|NEW |RESOLVED
CC| |renato.golin at linaro.org
Resolution|--- |FIXED
--- Comment #5 from Renato Golin <renato.golin at linaro.org> ---
Clang 3.9.0 doesn't crash, and it does warn about "&w" not making sense.
Later on, the ARM back-end does recognise the "w" operand and makes sure that
the sizes are correct and that the shifted immediate makes sense.
In the attached file1.c, the immediate is #0, and the assembler doesn't like
it:
test1.c:9:13: error: invalid operand for instruction
__asm__("vqshrn.s32 %P0, %q1, #0" : "=w"(tmp16x4_0) : "w"(tmp32x4_0));
^
<inline asm>:1:22: note: instantiated into assembly here
vqshrn.s32 d18, q8, #0
^
but if I change to, say, #4, I get the nice result:
vqshrn.s32 d18, q8, #4
If I use variables with the same size, the assembler also complains:
test1.c:11:13: error: invalid operand for instruction
__asm__("vqshrn.s32 %P0, %q1, #0" : "=w"(tmp16x4_0) : "w"(tmp16x4_1));
^
<inline asm>:1:21: note: instantiated into assembly here
vqshrn.s32 d16, d16, #0
^
So, the issue is completely fixed already.
--
You are receiving this mail because:
You are on the CC list for the bug.
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.llvm.org/pipermail/llvm-bugs/attachments/20160411/ab0a11c7/attachment.html>
More information about the llvm-bugs
mailing list