
#14152: Float exit paths out of recursive functions -------------------------------------+------------------------------------- Reporter: nomeata | Owner: (none) Type: task | Status: new Priority: normal | Milestone: Component: Compiler | Version: 8.2.1 Resolution: | Keywords: JoinPoints Operating System: Unknown/Multiple | Architecture: | Unknown/Multiple Type of failure: None/Unknown | Test Case: Blocked By: | Blocking: Related Tickets: #14137 #10918 | Differential Rev(s): Wiki Page: | -------------------------------------+------------------------------------- Comment (by nomeata): Digging deeper: For `CSD`, `-ticky`, even with all of base instrumted, does not not show anything. Same for `cryptarithm1`. Judging from the module sizes, in base only `Data.Semigroup`, `GHC.Arr` and `GHC.Float` are affected (but maybe floating a let binding can happen with equally sized output binary.). A quick look at the core difference shows that some thunks are floated inside a `joinrec`, or even inlined completely, e.g. in `Arr`’s `(//)` and `accum`. None of these look as if they’d affect a benchmark like `CSD`. It must be the weather, or the constellation of the stars. -- Ticket URL: http://ghc.haskell.org/trac/ghc/ticket/14152#comment:23 GHC http://www.haskell.org/ghc/ The Glasgow Haskell Compiler