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