diff options
author | Tim Northover <tnorthover@apple.com> | 2017-05-05 22:36:06 +0000 |
---|---|---|
committer | Tim Northover <tnorthover@apple.com> | 2017-05-05 22:36:06 +0000 |
commit | 23bcad226c564944d2155b027b9c9fe8a2591d05 (patch) | |
tree | 8119cddf0382e65ed1af0ec1ff2f662521389d96 /clang/lib/Frontend/CompilerInvocation.cpp | |
parent | ce03732ec85296f942ee6644596056ce5e577f89 (diff) | |
download | llvm-23bcad226c564944d2155b027b9c9fe8a2591d05.zip llvm-23bcad226c564944d2155b027b9c9fe8a2591d05.tar.gz llvm-23bcad226c564944d2155b027b9c9fe8a2591d05.tar.bz2 |
AArch64: fix weird edge case in ABI.
It turns out there are some sort-of-but-not-quite empty structs that break all
the rules. For example:
struct SuperEmpty { int arr[0]; };
struct SortOfEmpty { struct SuperEmpty e; };
Both of these have sizeof == 0, even in C++ mode, for GCC compatibility. The
first one also doesn't occupy a register when passed by value in GNU C++ mode,
unlike everything else.
On Darwin, we want to ignore the lot (and especially don't want to try to use
an i0 as we were).
llvm-svn: 302313
Diffstat (limited to 'clang/lib/Frontend/CompilerInvocation.cpp')
0 files changed, 0 insertions, 0 deletions