[cxx-abi-dev] C++ ABI version 2
Michael Gschwind
mkg at us.ibm.com
Fri Nov 29 08:25:12 UTC 2013
John McCall <rjmccall at apple.com> wrote on 11/29/2013 02:28:50 AM:
On Nov 25, 2013, at 7:05 PM, Michael Gschwind <mkg at us.ibm.com> wrote:
> > On Wed Nov 20 05:33:31 UTC 2013, John McCall <rjmccall at
> apple.com> wrote :
> > | Credit the good folks at ARM for these two ideas.
> >
> > I am curious about the history here, because it seems that the
> AArch64 ARM ABI appears to drop these changes? Does anybody have an
> explanation what transpired to make ARM reconisder and go back to a
> more vanilla "industry-standard ABI" (aka Itanium ABI)?
> >
> > Did it turn out that the improvements to be gotten (e.g., by
> shaving off a few cycles for reloading this) just wasn't worth the
> cost of deviating from the center of gravity for the C++ ABI that
> everybody else had, or can we infer more substantial reasons? (I
> think there may still be a few testcase fails for ARM32b due to
> different name mangling etc.)
> >
> > Also, the iOS ABI on 32b ARM seems to have stepped back from the
> full scope of the ARM 32b ABI? Any thoughts what is pulling these
> ABIs back into the mainline?
>
> I believe you're over-interpreting the data. :) Compilers have been
> very slow to implement any of the changes from the ARM C++ ABI
> (except the mandatory change to member function pointers),
> essentially because (I believe) no major ARM-based platform has
> actually adopted ARM’s C++ ABI in full, essentially because
> compilers have been very slow to implement any of it.
>
> The point of this proposal is that, if a vendor is motivated enough
> to implement a better ABI when it’s bringing up the compiler for a
> new platform, it’d be good to have recommendations for what to do.
> And if those recommendations are actually out there and widely
> agreed upon, that becomes an inducement for compiler vendors to
> implement them, which of course makes it easier for any such new
> platforms to adopt them.
I understand the point you're making, but in the specific example, Apple
was the one bringing up a new platform (which is exactly the opportunity
point you're referencing) and chose not to do what you describe. And, as
a kicker, ARM then basically went back on the platform recommendations
they had for the 32b ABI when the spec'ed a new ABI for 64b.
To phrase the question differently, when that platform vendor is to spec a
new ABI (like Apple did), are the benefits of the proposed changes
sufficient to motivate changes in what is (mostly) a machine-independent
part of a compiler, that then has to be maintained separately, and can
cause all sorts of distinct maintenance work? At what point does a
platform vendor like Apple decide to walk down a trodden path - as per
precedent - and how high has the payoff to be to forge a new path?
The Itanium C++ ABI changes rose to a level of changeworthiness in the
eyes of many and hence was widely implemented and adopted. ARM's proposed
improvements, though arguably nice, shave off a small number of cycles of
what is otherwise a comparatively larger cost, and it seems that when
making a cost/benefit analysis both Apple for iOS and ARM for AArch64
chose to forgo those changes, possibly based on enablement cost vs.
expected benefits, as you're pointing out (implicitly).
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://sourcerytools.com/pipermail/cxx-abi-dev/attachments/20131129/770eb600/attachment-0001.html>
More information about the cxx-abi-dev
mailing list