summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--ghc/compiler/simplCore/SimplCore.lhs8
1 files changed, 5 insertions, 3 deletions
diff --git a/ghc/compiler/simplCore/SimplCore.lhs b/ghc/compiler/simplCore/SimplCore.lhs
index 8e3139e041..a386a3d6b0 100644
--- a/ghc/compiler/simplCore/SimplCore.lhs
+++ b/ghc/compiler/simplCore/SimplCore.lhs
@@ -18,7 +18,7 @@ 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, occurAnalyseExpr )
import IdInfo ( setNewStrictnessInfo, newStrictnessInfo,
@@ -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}