On 07/01/14 09:59, Ben Lippmeier wrote:
On 06/01/2014, at 19:43 , Simon Peyton-Jones <[email protected]> wrote:
| Note that removing the flag isn't a "solution" to the underlying problem
| of the intermediate code being awful. Switching to the linear allocator
| just permits compilation of core code that was worse than before. Now it
| needs to spill more registers when compiling the same source code.
In what way is the intermediate code awful?
Because the error message from the register allocator tells us that
there are over 1000 live variables at a particular point the assembly
code, but the "biggest" SHA hashing algorithm (SHA-3) should only
need to maintain 25 words of state (says Wikipedia).
Neither of the register allocators reuse spill slots for variables that
have disjoint live ranges, so the fact that we ran out of spill slots is
not necessarily indicative of terrible code (but I agree that it's a
strong hint).
Cheers,
Simon
_______________________________________________
ghc-devs mailing list
[email protected]
http://www.haskell.org/mailman/listinfo/ghc-devs