
#13694: CSE runs before SpecConstr -------------------------------------+------------------------------------- Reporter: mpickering | Owner: (none) Type: bug | Status: new Priority: normal | Milestone: Component: Compiler | Version: 8.0.1 Keywords: SpecConstr, | Operating System: Unknown/Multiple cse | Architecture: | Type of failure: None/Unknown Unknown/Multiple | Test Case: | Blocked By: Blocking: | Related Tickets: Differential Rev(s): | Wiki Page: -------------------------------------+------------------------------------- SpecConstr can lead to more CSE opportunities. Currently CSE is run only once after the full laziness transformation but then not again later in the pipeline. Running it again after the final clean-up simplification might lead to smaller programs. One example with `-fspec-constr-keen`. {{{ module Foo where main :: [Int] main = drop 1 [1,2] mainMODULE :: [Int] mainMODULE = mydrop 1 [1,2] mydrop :: Int -> [a] -> [a] mydrop 0 xs = xs mydrop n (x:xs) = mydrop (n-1) xs }}} -- Ticket URL: http://ghc.haskell.org/trac/ghc/ticket/13694 GHC http://www.haskell.org/ghc/ The Glasgow Haskell Compiler