Skip to content

Compile-time regression in 8.2 when compiling bloodhound's test suite

GHC 8.2 takes much longer to compile bloodhound's test suite than GHC 8.0.2. With 8.0.2, compilation takes approximately a minute on my machine, 8.2 takes approximately four minutes and uses much more memory.

How to reproduce:

$ git clone -b ghc-8.2 https://github.com/23Skidoo/bloodhound.git
$ cd bloodhound
$ cabal new-build -w ghc-8.0.1 --enable-tests
$ cabal new-build -w ghc-8.2.1 --enable-tests 

GHC version:

$ ghc-8.2.1 --version
The Glorious Glasgow Haskell Compilation System, version 8.2.0.20170505

These warnings (fixed in my ghc-8.2 branch of bloodhound) may provide a clue to what's happening:

tests/V1/tests.hs:1876:17: warning: [-Wsimplifiable-class-constraints]
    • The constraint ‘SOP.All SOP.SListI (SOP.GCode a)’
        matches an instance declaration
      instance forall k (f :: k -> Constraint) (xs :: [k]).
               (Generics.SOP.Constraint.AllF f xs, SOP.SListI xs) =>
               SOP.All f xs
        -- Defined in ‘Generics.SOP.Constraint’
      This makes type inference for inner bindings fragile;
        either use MonoLocalBinds, or simplify it using the instance
    • In the type signature:
        sopArbitrary :: forall a.
                        (Generic a,
                         SOP.GTo a,
                         SOP.All SOP.SListI (SOP.GCode a),
                         SOP.All2 Arbitrary (SOP.GCode a)) =>
                        Gen a
Trac metadata
Trac field Value
Version 8.2.1-rc2
Type Bug
TypeOfFailure OtherFailure
Priority normal
Resolution Unresolved
Component Compiler
Test case
Differential revisions
BlockedBy
Related
Blocking
CC
Operating system
Architecture
To upload designs, you'll need to enable LFS and have an admin enable hashed storage. More information