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
