]> granicus.if.org Git - clang/commit
ARM ABI: passing illegal vector types as varargs.
authorManman Ren <mren@apple.com>
Tue, 16 Oct 2012 19:18:39 +0000 (19:18 +0000)
committerManman Ren <mren@apple.com>
Tue, 16 Oct 2012 19:18:39 +0000 (19:18 +0000)
commit97f81573636068fb9536436188caadf030584e58
treef590b21351c9ce61a83993b482e9f2106279fd47
parentd105e73368e677e65af724947be85ec87a0fa45e
ARM ABI: passing illegal vector types as varargs.

We expand varargs in clang and the call site is handled in the back end, it is
hard to match exactly how illegal vectors are handled in the backend. Therefore,
we legalize the illegal vector types in clang:
if (Size <= 32), legalize to i32.
if (Size == 64), legalize to v2i32.
if (Size == 128), legalize to v4i32.
if (Size > 128), use indirect.

rdar://12439123

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@166043 91177308-0d34-0410-b5e6-96231b3b80d8
lib/CodeGen/TargetInfo.cpp
test/CodeGen/arm-abi-vector.c