<div dir="ltr">On Sun, Aug 25, 2013 at 11:01 PM, Ben Lippmeier <span dir="ltr">&lt;<a href="mailto:benl@ouroborus.net" target="_blank">benl@ouroborus.net</a>&gt;</span> wrote:<br><div class="gmail_extra"><div class="gmail_quote">
<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div class="im"><br>
On 23/08/2013, at 3:52 AM, Ryan Newton wrote:<br>
<br>
&gt; Well, what&#39;s the long term plan?  Is the LLVM backend going to become the only backend at some point?<br>
<br>
</div>I wouldn&#39;t argue against ditching the NCG entirely. It&#39;s hard to justify fixing NCG performance problems when fixing them won&#39;t make the NCG faster than LLVM, and everyone uses LLVM anyway.<br></blockquote>
<div><br></div><div>This is not true.  I don&#39;t believe I&#39;ve ever seen the LLVM backend compile more quickly than the NCG, it usually takes significantly longer, and for at least some (most?) projects produces worse output.<br>
<br></div><div>I don&#39;t have anything against the LLVM backend in principle*, but at present it&#39;s not as good as the NCG for us.<br><br></div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">

We&#39;re going to need more and more SIMD support when processors supporting the Larrabee New Instructions (LRBni) appear on people&#39;s desks. At that time there still won&#39;t be a good enough reason to implement those instructions in the NCG.</blockquote>
<div><br></div><div>How about that the NCG is better than LLVM? ;)<br><br></div><div>In all seriousness, I&#39;m quite sympathetic to the desire to support only one backend, and LLVM can offer a lot (SIMD fallbacks, target architectures, etc).  But at present, in my experience the LLVM backend doesn&#39;t really live up to what I&#39;ve seen claimed for it.  Given that, I think it&#39;s a bit premature to talk of dropping the NCG.<br>
<br></div><div>My $0.02,<br>John<br><br></div><div>[1] Ok, I do have one issue with LLVM.  It&#39;s always struck me as very brittle, with a lot of breakages between versions.  Given that I just tried ghc -fllvm with LLVM-3.3 and the compiler bailed out due to a bad object file, my impression of brittleness doesn&#39;t seem likely to change any time soon.  Given that LLVM releases major versions predictably often, I don&#39;t know that I want ghc devs spending time chasing after them.  But in principle it seems the right thing to do.<br>
</div></div></div></div>