[project @ 2005-07-28 12:48:25 by simonpj]
[ghc-hetmet.git] / ghc / compiler / simplCore / SimplCore.lhs
index 97cc14c..a386a3d 100644 (file)
@@ -18,9 +18,9 @@ import HscTypes               ( HscEnv(..), ModGuts(..), ExternalPackageState(..),
 import CSE             ( cseProgram )
 import Rules           ( RuleBase, emptyRuleBase, mkRuleBase, unionRuleBase,
                          extendRuleBaseList, pprRuleBase, ruleCheckProgram,
-                         mkSpecInfo, addSpecInfo )
+                         addSpecInfo, addIdSpecialisations )
 import PprCore         ( pprCoreBindings, pprCoreExpr, pprRules )
-import OccurAnal       ( occurAnalysePgm, occurAnalyseGlobalExpr )
+import OccurAnal       ( occurAnalysePgm, occurAnalyseExpr )
 import IdInfo          ( setNewStrictnessInfo, newStrictnessInfo, 
                          setWorkerInfo, workerInfo,
                          setSpecInfo, specInfo, specInfoRules )
@@ -33,7 +33,7 @@ import CoreLint               ( endPass )
 import FloatIn         ( floatInwards )
 import FloatOut                ( floatOutwards )
 import Id              ( Id, modifyIdInfo, idInfo, isExportedId, isLocalId,
-                         idSpecialisation, setIdSpecialisation, idName )
+                         idSpecialisation, idName )
 import VarSet
 import VarEnv
 import NameEnv         ( lookupNameEnv )
@@ -266,7 +266,9 @@ updateBinders local_rules binds
 
     update_bndr bndr = case lookupNameEnv local_rules (idName bndr) of
                          Nothing    -> bndr
-                         Just rules -> bndr `setIdSpecialisation` mkSpecInfo rules
+                         Just rules -> bndr `addIdSpecialisations` rules
+                               -- The binder might have some existing rules,
+                               -- arising from specialisation pragmas
 \end{code}
 
 
@@ -311,8 +313,8 @@ simplExprGently :: SimplEnv -> CoreExpr -> SimplM CoreExpr
 -- enforce that; it just simplifies the expression twice
 
 simplExprGently env expr
-  = simplExpr env (occurAnalyseGlobalExpr expr)        `thenSmpl` \ expr1 ->
-    simplExpr env (occurAnalyseGlobalExpr expr1)
+  = simplExpr env (occurAnalyseExpr expr)      `thenSmpl` \ expr1 ->
+    simplExpr env (occurAnalyseExpr expr1)
 \end{code}