panic when compiling SHA
Simon Marlow
marlowsd at gmail.com
Thu Jan 9 20:49:34 UTC 2014
On 09/01/14 20:08, George Colpitts wrote:
> 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?
Let me reiterate: the SHA-1 library compiles just fine, provided the
-fregs-graph flag is not used with GHC 7.8.1. As far as I know it
compiles when using the LLVM backend too, but you don't have to use
LLVM: the NCG works fine.
Cheers,
Simon
>
> On Thu, Jan 9, 2014 at 3:17 PM, Adam Wick <awick at galois.com
> <mailto:awick at galois.com>> wrote:
>
> On Jan 8, 2014, at 2:42 AM, Simon Marlow <marlowsd at gmail.com
> <mailto: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 <mailto:ghc-devs at haskell.org>
> http://www.haskell.org/mailman/listinfo/ghc-devs
>
>
More information about the ghc-devs
mailing list