Supported platforms.
Also it does have some extension pragmas and is easier to use for something like trying to use Go baremetal.
gccgo didn't support escape analysis for quite a long time, which meant that the performance cost of the increased heap allocations absolutely dwarfed whatever performance gain you got from GCC's smarter optimizations. I think it's recently gained support for escape analysis—it's actually quite difficult to find information about this, and whether you need a compiler flag to enable it, etc.—but I don't think that's going to tip the performance scales in gccgo's favor. EDIT: See below: 8.1 ships on-by-default escape analysis!
The primary motivations for gccgo, at least to my understanding, were a) having a second reference implementation that could find bugs in gc and the language specification, and b) support for esoteric platforms that will likely never make it into gc. The announcement of gccgo has more information about its motivation, though it makes some claims about performance that haven't stood the test of time [2].
[0]: https://groups.google.com/forum/#!msg/golang-nuts/mjTmIkWKZ6...
[1]: https://dave.cheney.net/2013/11/19/benchmarking-go-1-2rc5-vs...
GCC 8 provides a complete implementation of the Go 1.10.1 user packages.
The garbage collector is now fully concurrent. As before, values stored on the stack are scanned conservatively, but value stored in the heap are scanned precisely.
Escape analysis is fully implemented and enabled by default in the Go frontend. This significantly reduces the number of heap allocations by allocating values on the stack instead.Why would values on the stack be garbage-collected at all? Do they mean scanning the stack for live references?
Scanning the entire heap is different because of its generally much bigger size. It's far more likely then to see references where there are none.
Sadly, those benchmarks (at the bottom of the thread) were done with a GCC that already included all the GCC 8.1 bells and whistles - results were unchanged under 8.1.
So it's still _really_ slow.