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