[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


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

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