X-Git-Url: http://git.megacz.com/?a=blobdiff_plain;f=compiler%2Fspecialise%2FSpecialise.lhs;h=86fd2fa628a1c0909e85436e6e94bc132e2f8b34;hb=59a4ad63f93f4fd7b8ede74bb2ea36778fe25e06;hp=fa9d2536215aa4709924276af4466987facace42;hpb=07f3c0c8ebbcc5298167b5b705a1660519b395c4;p=ghc-hetmet.git diff --git a/compiler/specialise/Specialise.lhs b/compiler/specialise/Specialise.lhs index fa9d253..86fd2fa 100644 --- a/compiler/specialise/Specialise.lhs +++ b/compiler/specialise/Specialise.lhs @@ -23,7 +23,7 @@ import VarSet import VarEnv import CoreSyn import CoreUtils ( applyTypeToArgs, mkPiTypes ) -import CoreFVs ( exprFreeVars, exprsFreeVars, idRuleVars ) +import CoreFVs ( exprFreeVars, exprsFreeVars, idFreeVars ) import CoreTidy ( tidyRules ) import CoreLint ( showPass, endPass ) import Rules ( addIdSpecialisations, mkLocalRule, lookupRule, emptyRuleBase, rulesOfBinds ) @@ -1072,10 +1072,12 @@ bind_fvs (Rec prs) = foldl delVarSet rhs_fvs bndrs bndrs = map fst prs rhs_fvs = unionVarSets (map pair_fvs prs) -pair_fvs (bndr, rhs) = exprFreeVars rhs `unionVarSet` idRuleVars bndr +pair_fvs (bndr, rhs) = exprFreeVars rhs `unionVarSet` idFreeVars bndr -- Don't forget variables mentioned in the -- rules of the bndr. C.f. OccAnal.addRuleUsage - + -- Also tyvars mentioned in its type; they may not appear in the RHS + -- type T a = Int + -- x :: T a = 3 addDictBind (dict,rhs) uds = uds { dict_binds = mkDB (NonRec dict rhs) `consBag` dict_binds uds }