On Jan 8, 2014, at 2:42 AM, Simon Marlow <[email protected]> wrote:
> 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).

That’s the problem with SHA, then. The implementation (and the spec, really) is 
essentially a long combination of the form:

let x_n5 = small_computation x_n1 x_n2 x_n3 x_n4
     x_n6 = small_computation x_n2 x_n3 x_n4 x_n5
     …

Which has ~70 entries. The actual number of live variables alive at any time 
should be relatively small, but if slots aren’t getting reused there’s going to 
be some significant blowup. (To be honest, I had figured — and thought I had 
validated — that doing it this way would give the compiler the best chance at 
generating optimal code, but it appears I merely set myself up to hit this 
limitation several years later.)


- Adam


Attachment: smime.p7s
Description: S/MIME cryptographic signature

_______________________________________________
ghc-devs mailing list
[email protected]
http://www.haskell.org/mailman/listinfo/ghc-devs

Reply via email to