Roman
I'm fine with this, but please add
Note [ForceSpecConstr]
~~~~~~~~~~~~~~~~~~~~~~
<blah>
to Specialise, with at least the text in your commit message, and preferably
some description of why this is a good thing to do.
Thanks
Simon
| -----Original Message-----
| From: [email protected] [mailto:[email protected]] On
Behalf Of
| Roman Leshchinskiy
| Sent: 04 December 2009 02:46
| To: [email protected]
| Subject: patch applied (ghc): Add new ForceSpecConstr annotation
|
| Wed Dec 2 22:54:55 PST 2009 Roman Leshchinskiy <[email protected]>
| * Add new ForceSpecConstr annotation
| Ignore-this: ca5327f85d9d40c78d95e8bfe3e7fab1
|
| Annotating a type with {-# ANN type T ForceSpecConstr #-} makes SpecConstr
| ignore -fspec-constr-threshold and -fspec-constr-count for recursive
functions
| that have arguments of type T. Such functions will be specialised regardless
| of their size and there is no upper bound on the number of specialisations
| that can be generated. This also works if T is embedded in other types such
as
| Maybe T (but not T -> T).
|
| T should not be a product type because it could be eliminated by the
| worker/wrapper transformation. For instance, in
|
| data T = T Int Int
|
| foo :: T -> Int
| foo (T m n) = ... foo (T m' n') ...
|
| SpecConstr will never see the T because w/w will get rid of it. I'm still
| thinking about whether fixing this is worthwhile.
|
| M ./compiler/specialise/SpecConstr.lhs -12 +36
|
| View patch online:
| http://darcs.haskell.org/ghc/_darcs/patches/20091203065455-b2b0a-
| 0cada94f63ecfd8488f5211da2df6e245f4b8d0f.gz
|
| _______________________________________________
| 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