
#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): Inlining the exit join points in the `"final"` simplifier iteration is not a clear win: {{{ Nofib runtimes Benchmark name previous change now nofib/time/VS 0.372 + 16.13% 0.432 seconds nofib/time/cryptarithm1 0.503 + 4.17% 0.524 seconds nofib/time/k-nucleotide 5.558 - 7.72% 5.129 seconds }}} my theory is that floating exit paths out of tight loops makes tight loops very small which is beneficial for *mumble mumble* weird hardware reasons. (I know, someone needs to look at the code instead of speculating…) -- Ticket URL: http://ghc.haskell.org/trac/ghc/ticket/14152#comment:18 GHC http://www.haskell.org/ghc/ The Glasgow Haskell Compiler