<html><body style="word-wrap: break-word; -webkit-nbsp-mode: space; -webkit-line-break: after-white-space; "><div><div>On Jan 7, 2008, at 10:54, Carl Friedrich Bolz wrote:</div><br class="Apple-interchange-newline"><blockquote type="cite">Gordon Henriksen wrote:</blockquote><blockquote type="cite"><br></blockquote><blockquote type="cite"><blockquote type="cite"><span class="Apple-style-span" style="-webkit-text-stroke-width: -1; ">That said, the PyPy group has llvmgcroot support on a branch; you could ask Armin Rigo <arigo at tunes dot org> for details about accessing it.</span></blockquote></blockquote><blockquote type="cite"><blockquote type="cite"></blockquote><blockquote type="cite"><br></blockquote><blockquote type="cite">On his benchmarks, Armin saw an 8% speedup vs. a shadow stack.  Their <span class="Apple-style-span" style="-webkit-text-stroke-width: -1; ">gcc backend still outperforms the LLVM backend, though—and llvm-gcc outperforms that further still.</span></blockquote><br>The second part of this is not correct. I don't think we ever even tried llvm-gcc on the output of our C backend. What we see on x86 machines is that LLVM's own code generators produce slower code than using LLVM's C backend and then running GCC on this. This however is then faster than our own C backend using GCC.</blockquote><br>Thanks for the clarification, Carl.</div><div><br class="webkit-block-placeholder"></div><div><blockquote type="cite">Hm, summary:<br></blockquote><div><blockquote type="cite"><font class="Apple-style-span" color="#144FAE"><br class="webkit-block-placeholder"></font></blockquote></div><blockquote type="cite">    pypy-llvm-backend with llvm's codegen<br>  < pypy-c-backend with GCC<br>  < pypy-llvm-backend using llvm's C backend and then GCC<br></blockquote></div><br><div>I wonder what the impact of using llvm-gcc instead of GCC is in this final pipeline. If that actually works, you could indeed eliminate the shadow stack here as well, since llvm-gcc has extensions to emit gcroot intrinsic calls. It's currently hardwired to the shadow-stack codegen, but that's very fixable.</div><div><br><span class="Apple-style-span" style="-webkit-text-stroke-width: -1; ">— Gordon</span></div><div apple-content-edited="true"> </div><br></body></html>