]> granicus.if.org Git - clang/commit
Change AArch64 i128 returns to use [2 x i64] when possible.
authorPete Cooper <peter_cooper@apple.com>
Fri, 17 Apr 2015 22:16:24 +0000 (22:16 +0000)
committerPete Cooper <peter_cooper@apple.com>
Fri, 17 Apr 2015 22:16:24 +0000 (22:16 +0000)
commitaf3ab2bc511fdcfb18ca15eb52a9d9eb921121fd
tree44f26ad2008873a6f893de8be3f9945d39b64d32
parentb2340338a2ae45bc6e4481893fb7c70b9a662840
Change AArch64 i128 returns to use [2 x i64] when possible.

Something like { void*, void * } would be passed to a function as a [2 x i64], but returned as an i128.  This patch unifies the 2 behaviours so that we also return it as a [2 x i64].

This is better for the quality of the IR, and the size of the final LLVM binary as we tend to want to insert/extract values from these types and do so with the insert/extract instructions is less IR than shifting, truncating, and or'ing values.

Reviewed by Tim Northover.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@235231 91177308-0d34-0410-b5e6-96231b3b80d8
lib/CodeGen/TargetInfo.cpp
test/CodeGen/arm64-arguments.c