Skip to content

Pathological compilation behavior with GHC 9.8.1 #51

@m4dc4p

Description

@m4dc4p

I've found that a module using barbies takes exponentially longer to compile under GHC 9.8 as I add fields to a data type.

The repo at https://github.com/m4dc4p/ghc98-bug demonstrates the problem. If you have GHC and cabal installed, you should be able to build with just cabal build:

$ cabal build
Warning: The package list for 'hackage.haskell.org' is 19 days old.
Run 'cabal update' to get the latest list of available packages.
Resolving dependencies...
Build profile: -w ghc-9.8.1 -O1
In order, the following will be built (use -v for more details):
 - ghc98-bug-0.0.0 (lib) (first run)
Configuring library for ghc98-bug-0.0.0..
Preprocessing library for ghc98-bug-0.0.0..
Building library for ghc98-bug-0.0.0..

Uncommenting fields on the HDKType data constructor cause compilation to take longer and longer (and use more memory):

  • 1 field - 2.5s, 198MB peak
  • 2 fields - 7s, 1.0GB peak
  • 3 fields - 26.8s, 4.6GB peak
  • 4 fields - 82.9s, 14.5GB peak

Its worth noting the removing the deriving instance for Eq causes the problem to go away (but, of course, that instance is something we want). Also worth noting that with -O0, the problem goes away. I have not narrowed down which optimization is the problem.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions