diff options
author | Pirama Arumuga Nainar <pirama@google.com> | 2016-07-27 19:01:51 +0000 |
---|---|---|
committer | Pirama Arumuga Nainar <pirama@google.com> | 2016-07-27 19:01:51 +0000 |
commit | bb846a32e4c8c69195b6c3f1befc1dab5eccb349 (patch) | |
tree | 8d96cdd504687c6ac54fce52a4b3f210d6fb69fc /clang/lib/Frontend/CompilerInvocation.cpp | |
parent | fae7986bf3cbc89aa56decc576a3700afc022384 (diff) | |
download | bcm5719-llvm-bb846a32e4c8c69195b6c3f1befc1dab5eccb349.tar.gz bcm5719-llvm-bb846a32e4c8c69195b6c3f1befc1dab5eccb349.zip |
Adjust coercion of aggregates on RenderScript
Summary:
In RenderScript, the size of the argument or return value emitted in the
IR is expected to be the same as the size of corresponding qualified
type. For ARM and AArch64, the coercion performed by Clang can
change the parameter or return value to a type whose size is different
(usually larger) than the original aggregate type. Specifically, this
can happen in the following cases:
- Aggregate parameters of size <= 64 bytes and return values smaller
than 4 bytes on ARM
- Aggregate parameters and return values smaller than bytes on
AArch64
This patch coerces the cases above to an integer array that is the same
size and alignment as the original aggregate. A new field is added to
TargetInfo to detect a RenderScript target and limit this coercion just
to that case.
Tests added to test/CodeGen/renderscript.c
Reviewers: rsmith
Subscribers: aemerson, srhines, llvm-commits
Differential Revision: https://reviews.llvm.org/D22822
llvm-svn: 276904
Diffstat (limited to 'clang/lib/Frontend/CompilerInvocation.cpp')
0 files changed, 0 insertions, 0 deletions