Generated Core size blows up from seemingly small change
See main ticket #8095
With the two attached modules (Types.hs Plan.hs)
compiling to Core finishes quickly and the total Core size is reasonable:
$ time ./_build/stage1/bin/ghc -fforce-recomp -fno-code -iinput Memory.Plan -ddump-ds |wc -l
6368
real 0m2.218s
user 0m2.040s
sys 0m0.201s
However, if I change mergeGroup
just slightly by uncommenting its alternate definition, i.e. by wrapping the result type in Field
:
mergeGroup :: Rel '[CExposureIndex, CSameExposure] -> Field ("BAR" ::: Rel (("TRADESINGROUP" ::: Rel SameExposure_) : AffinityGroupInfo))
mergeGroup r = Field sameExps'
where
-- rest unchanged
then suddenly the Core size shoots up:
$ time ./_build/stage1/bin/ghc -fforce-recomp -fno-code -iinput Memory.Plan -ddump-ds |wc -l
489524
real 0m35.156s
user 0m34.467s
sys 0m2.627s
The 76x increase in Core size is coming from lots and lots (and lots and lots and lots...) of types in casts.