
#9630: compile-time performance regression (probably due to Generics) -------------------------------------+------------------------------------- Reporter: hvr | Owner: dfeuer Type: bug | Status: new Priority: high | Milestone: 8.2.1 Component: Compiler | Version: 7.9 Resolution: | Keywords: deriving- | perf, Generics Operating System: Unknown/Multiple | Architecture: Type of failure: Compile-time | Unknown/Multiple performance bug | Test Case: Blocked By: | Blocking: Related Tickets: #9583, #10293, | Differential Rev(s): #13059, #10818 | Wiki Page: | -------------------------------------+------------------------------------- Comment (by RyanGlScott): I've confirmed this as well. Before that commit, this is the `-ddump-ds` output: {{{ $cnoDuh_axu :: T -> Integer [LclId, Str=DmdType] $cnoDuh_axu = \ (ds_dTM :: T) -> case ds_dTM of _ [Occ=Dead] { T m_avB -> gnoDuh @ (Maybe (Maybe ())) $dGenDuh_axt m_avB } $cduh_axo :: Integer -> T [LclId, Str=DmdType] $cduh_axo = \ (i_avA :: Integer) -> Duh.T (gduh @ (Maybe (Maybe ())) $dGenDuh_axt i_avA) }}} But after that commit: {{{ $cnoDuh_axw :: T -> Integer [LclId, Str=DmdType] $cnoDuh_axw = let { $dGenDuh_aNk :: GenDuh (Maybe ()) [LclId, Str=DmdType] $dGenDuh_aNk = Duh.$fGenDuhMaybe @ () Duh.$fGenDuh() } in let { $dGenDuh_axC :: GenDuh (Maybe (Maybe ())) [LclId, Str=DmdType] $dGenDuh_axC = Duh.$fGenDuhMaybe @ (Maybe ()) $dGenDuh_aNk } in \ (ds_dTV :: T) -> case ds_dTV of _ [Occ=Dead] { T m_avB -> gnoDuh @ (Maybe (Maybe ())) $dGenDuh_axC m_avB } $cduh_axp :: Integer -> T [LclId, Str=DmdType] $cduh_axp = let { $dGenDuh_aNi :: GenDuh (Maybe ()) [LclId, Str=DmdType] $dGenDuh_aNi = Duh.$fGenDuhMaybe @ () Duh.$fGenDuh() } in let { $dGenDuh_axv :: GenDuh (Maybe (Maybe ())) [LclId, Str=DmdType] $dGenDuh_axv = Duh.$fGenDuhMaybe @ (Maybe ()) $dGenDuh_aNi } in \ (i_avA :: Integer) -> Duh.T (gduh @ (Maybe (Maybe ())) $dGenDuh_axv i_avA) }}} -- Ticket URL: http://ghc.haskell.org/trac/ghc/ticket/9630#comment:58 GHC http://www.haskell.org/ghc/ The Glasgow Haskell Compiler