Re: Hoopl vs LLVM?

Simon Marlow <[email protected]>
Newsgroups gmane.comp.lang.haskell.cvs.ghc,gmane.comp.lang.haskell.glasgow.user
Message-ID <[email protected]>
On 12/12/12 17:37, Johan Tibell wrote:
> On Wed, Dec 12, 2012 at 4:35 AM, Simon Marlow <[email protected]> wrote:
>> On 11/12/12 21:33, Johan Tibell wrote:
>>> I'd definitely be interesting in understanding why as it, like you
>>> say, makes it harder for LLVM to understand what our code does and
>>> optimize it well.
>>
>>
>> The example that Simon gave is a good illustration:
>>
>> <snip>
>
> My question was more: why do we CPS transform? I guess it's because we
> manage our own stack?

Right.  In fact, LLVM does its own CPS transform (but doesn't call it 
that) when the code contains non-tail function calls.  We give LLVM code 
with tail-calls only.

The choice about whether to manage our own stack is *very* deep, and has 
ramifications all over the system.  Changing it would mean a completely 
new backend and replacing a lot of the RTS, that is if you could find a 
good scheme for tracking pointers in the stack - I'm not sure LLVM is up 
to the job without more work.  It could probably be done, but it's a 
huge undertaking and it's not at all clear that you could do any better 
than GHC currently does.  We generate very good code from idiomatic 
Haskell; where we fall down is in heavy numerical and loopy code, where 
LLVM does a much better job.

Cheers,
	Simon
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.