
#13016: SPECIALIZE INLINE doesn't necessarily inline specializations of a recursive function -------------------------------------+------------------------------------- Reporter: nfrisby | Owner: (none) Type: bug | Status: new Priority: normal | Milestone: Component: Compiler | Version: 8.0.1 Resolution: | Keywords: Inlining Operating System: Unknown/Multiple | Architecture: Type of failure: Runtime | Unknown/Multiple performance bug | Test Case: Blocked By: | Blocking: Related Tickets: #13014 | Differential Rev(s): Wiki Page: | -------------------------------------+------------------------------------- Comment (by mpickering): I also confirmed that b61562feb87689a202118ca08ef270422c69dcc2 causes SpecConstr to fire on this example when it didn't before. Here is the snippet of the core which was produced *before* this patch. {{{ T13016.exampleMODULE2 :: Arr (Int, Int) [GblId, Caf=NoCafRefs, Str=DmdType, Unf=Unf{Src=<vanilla>, TopLvl=True, Value=True, ConLike=True, WorkFree=True, Expandable=True, Guidance=IF_ARGS [] 10 30}] T13016.exampleMODULE2 = T13016.ArrPair @ (Int, Int) @ Int @ Int @~ <(Int, Int)>_N T13016.exampleMODULE4 T13016.exampleMODULE3 T13016.exampleMODULE1 :: Int [GblId, Caf=NoCafRefs, Str=DmdType, Unf=Unf{Src=<vanilla>, TopLvl=True, Value=True, ConLike=True, WorkFree=True, Expandable=True, Guidance=IF_ARGS [] 10 20}] T13016.exampleMODULE1 = I# 5# exampleMODULE :: (Int, Int) [GblId, Str=DmdType, Unf=Unf{Src=<vanilla>, TopLvl=True, Value=False, ConLike=False, WorkFree=False, Expandable=False, Guidance=IF_ARGS [] 50 30}] exampleMODULE = case T13016.$w$s!: @ Int @ Int T13016.exampleMODULE2 T13016.exampleMODULE1 of _ [Occ=Dead] { (# ww1_sAJ, ww2_sAK #) -> (ww1_sAJ, ww2_sAK) } }}} -- Ticket URL: http://ghc.haskell.org/trac/ghc/ticket/13016#comment:10 GHC http://www.haskell.org/ghc/ The Glasgow Haskell Compiler