]> granicus.if.org Git - clang/commit
Alter the iOS/tvOS ARM64 C++ ABI to ignore the upper half of the
authorJohn McCall <rjmccall@apple.com>
Fri, 16 Sep 2016 02:40:45 +0000 (02:40 +0000)
committerJohn McCall <rjmccall@apple.com>
Fri, 16 Sep 2016 02:40:45 +0000 (02:40 +0000)
commitcf503443449ee0c09fb9bd1d46a5a391a082ac51
tree27e6358596954e0ae53a5fa8908048664bca6c3b
parent9e2219959b1e0922d079210b54843f644e56249c
Alter the iOS/tvOS ARM64 C++ ABI to ignore the upper half of the
virtual table offset in a member function pointer.

We are reserving this space for future ABI use relating to alternative
v-table configurations.  In the meantime, continue to zero-initialize
this space when actually emitting a member pointer literal.

This will successfully interoperate with existing compilers.
Future versions of the compiler may place additional data in
this location, and at that point, code emitted by compilers
prior to this patch will fail if exposed to such a member pointer.
This is therefore a somewhat hard ABI break.  However, because
it is limited to an uncommon case of an uncommon language feature,
and especially because interoperation with the standard library
does not depend on member pointers, we believe that with a
sufficiently advance compiler change the impact of this break
will be minimal in practice.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@281693 91177308-0d34-0410-b5e6-96231b3b80d8
lib/CodeGen/ItaniumCXXABI.cpp
test/CodeGenCXX/arm64.cpp