Split-stack support for aarch64

Ian Lance Taylor iant@google.com
Sun Apr 10 19:56:00 GMT 2016

On Mon, Apr 4, 2016 at 6:52 AM, Adhemerval Zanella
<adhemerval.zanella@linaro.org> wrote:
> Since BZ#67877 [1] does not have much information on it, I would like
> to ask for some inputs of which is the requirement of implementing
> split-stack on aarch64 besides 'feature parity'.
> I am asking it because on PR it states the main use it gccgo and
> afaik there is some usage in other programs, but the widespread
> is not really convincing (for instance, rust now allows targets
> to be built without it [2]).
> I also noted GO from 1.4 does not use split-stack anymore, stating
> it suffers from a performance issue ("hot stack split") and some
> search on the internet describes that for 64-bit targets split-stack
> is not really an efficient way to manage stack grows.
> So this is only for gccgo support? It gccgo stuck in pre 1.4 version
> and/or not willing remove split-stack usage (as go itself)?

As far as I know gccgo is the only program to seriously use split-stack support.

The Go gc compiler now uses stack copying rather than stack splitting.
It would be great to implement that in gccgo, but it's hard.  It
requires knowing absolutely every single pointer on the stack.  If we
could do that, stack copying would in effect be a minor variant of
stack splitting.  The compiler side would not change noticeably, only
some of the support code in libgcc.


More information about the Gcc mailing list