|
regression: RULES not matching: msg#00070lang.haskell.glasgow.bugs
Hi Simon, I think some recent patch has made some of my fusion rules stop matching. the test case is: foo = B.map (+1) . B.filter (/=0) with ghc 6.4.2 and with older versions of ghc-6.5 (May 26th): 5 RuleFired 2 int2Word# 2 narrow8Word# 1 strTransformerBi/strTransformerBi with my recent ghc 6.5 (Jul 24th) that strTransformer rule no longer fires. the rule is fairly simple: "strTransformerBi/strTransformerBi" forall f g s. strTransformerBi f (strTransformerBi g s) = strTransformerBi (f . g) s from looking at -ddump-simpl-iterations we get something interesting: Main.foo :: Data.ByteString.Base.ByteString -> Data.ByteString.Base.ByteString [Exported] [Arity 1] Main.foo = \ (x_a1t7 :: Data.ByteString.Base.ByteString) -> Data.ByteString.FusionStream.strTransformerBi1 (Data.ByteString.FusionStream.mapS1 a_s1tf) (Data.ByteString.FusionStream.strTransformerBi1 (Data.ByteString.FusionStream.filterS1 a_s1th) x_a1t7) This is exactly the form that should be matched by the rule, except.. what is this strTransformerBi1 ? with the '1' suffix? Where did that come from and is that what's causing the rule not to match? It's not there in 6.4.2. The full code is available: darcs get http://www.cse.unsw.edu.au/~dons/code/fps-unstable I'm just going to build ghc head and see if the issues still exists. This is a bit of a problem for Dons and me at the moment because we need a single version of ghc to use to benchmark our various fusion systems for a paper. We could go back to the May 26th version I suppose. Duncan
|
|
| <Prev in Thread] | Current Thread | [Next in Thread> |
|---|---|---|
| Previous by Date: | [GHC] #832: fermat numbers make the baby jesus cry., GHC |
|---|---|
| Next by Date: | Re: regression: RULES not matching, Duncan Coutts |
| Previous by Thread: | [GHC] #832: fermat numbers make the baby jesus cry., GHC |
| Next by Thread: | Re: regression: RULES not matching, Duncan Coutts |
| Indexes: | [Date] [Thread] [Top] [All Lists] |
| News | FAQ | advertise |