&gt; For example, no standard ABIs and toolchains supported segmented stacks; we had to build that, so it was going to be incompatible from day one. If step one had been &quot;learn the GCC or LLVM toolchains well enough to add segmented stacks&quot;, I&#x27;m not sure we&#x27;d have gotten to step two.&quot;<p>LLVM now supports both segmented stacks [1] and precise garbage collection with patchpoints [2].<p>Tweaking support for segmented stacks is quite easy—I added the support for it on x86 Mac. You simply adjust the prolog emission code in X86FrameLowering.cpp and likewise for the other targets.<p>[1]: <a href="http:&#x2F;&#x2F;llvm.org&#x2F;docs&#x2F;SegmentedStacks.html" rel="nofollow">http:&#x2F;&#x2F;llvm.org&#x2F;docs&#x2F;SegmentedStacks.html</a><p>[2]: <a href="http:&#x2F;&#x2F;llvm.org&#x2F;docs&#x2F;StackMaps.html" rel="nofollow">http:&#x2F;&#x2F;llvm.org&#x2F;docs&#x2F;StackMaps.html</a> <a href="http:&#x2F;&#x2F;llvm.org&#x2F;docs&#x2F;Statepoints.html" rel="nofollow">http:&#x2F;&#x2F;llvm.org&#x2F;docs&#x2F;Statepoints.html</a>