MethSharing fail

Roman Leshchinskiy 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.

Roman




More information about the Cvs-ghc mailing list