projects
/
ghc-hetmet.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
[project @ 2003-11-27 09:30:54 by simonmar]
[ghc-hetmet.git]
/
ghc
/
compiler
/
specialise
/
Specialise.lhs
diff --git
a/ghc/compiler/specialise/Specialise.lhs
b/ghc/compiler/specialise/Specialise.lhs
index
56aa638
..
006e06d
100644
(file)
--- a/
ghc/compiler/specialise/Specialise.lhs
+++ b/
ghc/compiler/specialise/Specialise.lhs
@@
-9,7
+9,7
@@
module Specialise ( specProgram ) where
#include "HsVersions.h"
import CmdLineOpts ( DynFlags, DynFlag(..) )
#include "HsVersions.h"
import CmdLineOpts ( DynFlags, DynFlag(..) )
-import Id ( Id, idName, idType, mkUserLocal, idSpecialisation, isDataConWrapId )
+import Id ( Id, idName, idType, mkUserLocal )
import TcType ( Type, mkTyVarTy, tcSplitSigmaTy,
tyVarsOfTypes, tyVarsOfTheta, isClassPred,
mkForAllTys, tcCmpType
import TcType ( Type, mkTyVarTy, tcSplitSigmaTy,
tyVarsOfTypes, tyVarsOfTheta, isClassPred,
mkForAllTys, tcCmpType
@@
-787,8
+787,6
@@
specDefn subst calls (fn, rhs)
| rhs_tyvars `lengthIs` n_tyvars -- Rhs of fn's defn has right number of big lambdas
&& rhs_bndrs `lengthAtLeast` n_dicts -- and enough dict args
&& notNull calls_for_me -- And there are some calls to specialise
| rhs_tyvars `lengthIs` n_tyvars -- Rhs of fn's defn has right number of big lambdas
&& rhs_bndrs `lengthAtLeast` n_dicts -- and enough dict args
&& notNull calls_for_me -- And there are some calls to specialise
- && not (isDataConWrapId fn) -- And it's not a data con wrapper, which have
- -- stupid overloading that simply discard the dictionary
-- At one time I tried not specialising small functions
-- but sometimes there are big functions marked INLINE
-- At one time I tried not specialising small functions
-- but sometimes there are big functions marked INLINE
@@
-1029,10
+1027,9
@@
mkCallUDs subst f args
spec_tys = [mk_spec_ty tv ty | (tv, Type ty) <- tyvars `zip` args]
dicts = [dict_expr | (_, dict_expr) <- theta `zip` (drop n_tyvars args)]
spec_tys = [mk_spec_ty tv ty | (tv, Type ty) <- tyvars `zip` args]
dicts = [dict_expr | (_, dict_expr) <- theta `zip` (drop n_tyvars args)]
- mk_spec_ty tyvar ty | tyvar `elemVarSet` constrained_tyvars
- = Just ty
- | otherwise
- = Nothing
+ mk_spec_ty tyvar ty
+ | tyvar `elemVarSet` constrained_tyvars = Just ty
+ | otherwise = Nothing
------------------------------------------------------------
plusUDs :: UsageDetails -> UsageDetails -> UsageDetails
------------------------------------------------------------
plusUDs :: UsageDetails -> UsageDetails -> UsageDetails