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

陳韋任 chenwj at iis.sinica.edu.tw
Wed May 2 01:11:37 PDT 2012

> >  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 know the ARM C++ ctor ABI is handled correctly. :) Actually I want to know
the status of the patch [1] which change the matching rule from

// CHECK: call void @_ZN10destroyme1D1Ev


// CHECK: call {{.*}}* @_ZN10destroyme1D1Ev
  I don't see they are applied in the trunk.

> 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.

  Thanks for the info. ;)



Wei-Ren Chen (陳韋任)
Computer Systems Lab, Institute of Information Science,
Academia Sinica, Taiwan (R.O.C.)
Tel:886-2-2788-3799 #1667
Homepage: http://people.cs.nctu.edu.tw/~chenwj

More information about the cfe-commits mailing list