[LLVMbugs] [Bug 12796] New: ARMFastISel::FinishCall doesn't handle returning general ARM NEON vectors

bugzilla-daemon at llvm.org bugzilla-daemon at llvm.org
Thu May 10 23:31:44 PDT 2012


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: unassignedbugs at nondot.org
        ReportedBy: iannucci at mit.edu
                CC: llvmbugs at cs.uiuc.edu
    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.



More information about the llvm-bugs mailing list