http://llvm.org/bugs/show_bug.cgi?id=12796

             Bug #: 12796
           Summary: ARMFastISel::FinishCall doesn't handle returning
                    general ARM NEON vectors
           Product: libraries
           Version: trunk
          Platform: PC
        OS/Version: MacOS X
            Status: NEW
          Severity: normal
          Priority: P
         Component: Backend: ARM
        AssignedTo: [email protected]
        ReportedBy: [email protected]
                CC: [email protected]
    Classification: Unclassified


It seems that ARMFastISel::FinishCall doesn't handle returns of ARM NEON
vectors unless (a) the vector is a pair of doubles, or (b) the vector fits into
an RVLoc vector of size 1.  According to the ARM architecture procedure call
standard, for VCP co-processor containerized vector types, the ideal behavior
is to return the vector "in the appropriate number of consecutive VFP registers
starting with the lowest numbered register (s0, d0, q0)".

Here is a test case that triggers the assertion in question.  Tested in trunk.

test.c:
__attribute__((neon_vector_type(16)))signed char b(){}void a(){b();}

Compile with
clang -cc1 -triple thumbv7-apple-ios -S test.c

-- 
Configure bugmail: http://llvm.org/bugs/userprefs.cgi?tab=email
------- You are receiving this mail because: -------
You are on the CC list for the bug.
_______________________________________________
LLVMbugs mailing list
[email protected]
http://lists.cs.uiuc.edu/mailman/listinfo/llvmbugs

Reply via email to