rl at cse.unsw.edu.au
Wed Nov 17 14:37:18 EST 2010
On 17/11/2010, at 17:32, Simon Peyton-Jones wrote:
> Why has the behavior changed? Because it depends whether eta-expansion happens before float-out. Now it does. I could change that back. The eta expander knows that (sc_sel d) is cheap, so it turns it into this
> exp = /\a. \d.\x. let d1 = sc_sel d in ....(fromInteger d1 3)....
> and now again the floater can do nothing.
Couldn't this be handled by what you suggested for http://hackage.haskell.org/trac/ghc/ticket/2607?
> I think this is a bit of an unusual case. But in any case, there is a better solution: make (^) INLINABLE so that it'll specialise. That makes the original test work twice as fast. I believe I have pushed a ptach to this effect
I'm not sure it's that unusual. I remember complaining about GHC not floating method selectors out of loops. I this we even had an email discussion about this a couple of months ago.
More information about the Cvs-ghc