panic when compiling SHA

George Colpitts george.colpitts at gmail.com
Thu Jan 9 20:08:11 UTC 2014


Does LLVM have the same limitation that its register allocator does not
reuse spill slots for variables that have disjoint live ranges? If not,
could the library be compiled with llvm?


On Thu, Jan 9, 2014 at 3:17 PM, Adam Wick <awick at galois.com> wrote:

> On Jan 8, 2014, at 2:42 AM, Simon Marlow <marlowsd at gmail.com> 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
>
>
>
> _______________________________________________
> ghc-devs mailing list
> ghc-devs at haskell.org
> http://www.haskell.org/mailman/listinfo/ghc-devs
>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://www.haskell.org/pipermail/ghc-devs/attachments/20140109/cdfbcc6b/attachment.html>


More information about the ghc-devs mailing list