[cfe-commits] [PATCH] Fix test case failure due to C++ ABI difference on ARM

John McCall rjmccall at apple.com
Wed May 2 00:39:35 PDT 2012

On May 1, 2012, at 11:47 PM, 陳韋任 wrote:
> On Tue, May 01, 2012 at 10:35:21AM -0700, John McCall wrote:
>> On Apr 30, 2012, at 8:23 PM, 陳韋任 wrote:
>>> This patch addresses x86/ARM C++ ABI difference on member function pointer.
>>> You can see more detail in Sec. 3.2.1 "Representation of pointer to member
>>> function" [1].
>> The test is just missing a triple, and so is defaulting to the current platform.
>> I folded this into an existing test for member function pointers in r155920.
>  Okay, I see the test done by virt-call-offsets.cpp is moved to member-function-pointers.cpp.
> Do you know what the fix on X86/ARM ctor ABI difference status is [1]?

virt-call-offsets.cpp was not expecting to be tested on an ARM host.  That's
a legitimate flaw in the test, but it does not indicate a bug in our handling of
the ARM C++ ABI.  I implemented returning this from ctors and dtors on
ARM targets in August 2010 in r112588, and as far as I know, there is nothing to fix.

I do know that there are parts of the ARM C++ ABI that we do not currently
implement:  for example, the ARM ABI has slightly different rules for selecting
a key function, but clang always uses the base Itanium rule.

Note that not all ARM-based platforms actually follow the full ARM C++ ABI.
iOS, for example, does not guarantee that ctors and dtors return this;  clang
does it, but gcc and llvm-gcc do not.


More information about the cfe-commits mailing list