Yes I do.

================
(^) looks like this  (I'll write it "exp")

exp = /\a. \d.  let d1 = sc_sel d in \x. ....(fromInteger d1 3)....

The float-out pass must pull out the fromInteger call to make the test run fast.

But notice how fragile this is.  If there wasn't any superclass selection it'd 
look like

exp = /\a.\d.\x. ...(fromInteger d 3)....

and now the floater would not float the call, because it doesn't separate 
lambdas.


================
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.

=================
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

S

| -----Original Message-----
| From: [email protected] [mailto:[email protected]] On 
Behalf Of
| Simon Marlow
| Sent: 17 November 2010 11:18
| To: GHC CVS list
| Subject: MethSharing fail
| 
| Anybody know anything about this one?  From a validate run this morning:
| 
| =====> MethSharing(normal) 9 of 12 [0, 0, 0]
| cd ./should_run && '/64playpen/simonmar/validate/inplace/bin/ghc-stage2'
| -fforce-recomp -dcore-lint -dcmm-lint -dno-debug-output
| -no-user-package-conf -rtsopts  -o MethSharing MethSharing.hs  -O
|  >MethSharing.comp.stderr 2>&1
| cd ./should_run && ./MethSharing  +RTS -V0 -tMethSharing.stats
| --machine-readable -RTS   </dev/null >MethSharing.run.stdout
| 2>MethSharing.run.stderr
| bytes allocated 9451653864 is more than maximum allowed 6000000000
| 
| _______________________________________________
| Cvs-ghc mailing list
| [email protected]
| http://www.haskell.org/mailman/listinfo/cvs-ghc

_______________________________________________
Cvs-ghc mailing list
[email protected]
http://www.haskell.org/mailman/listinfo/cvs-ghc

Reply via email to