Commit b7d8dffa authored by simonpj@microsoft.com's avatar simonpj@microsoft.com
Browse files

Add idHasRules

Add Id.idHasRules :: Id -> Bool, with the obvious semantics.
This patch makes sense by itself, but it's just a tidy-up.
parent 39dd1943
......@@ -66,7 +66,7 @@ module Id (
idNewStrictness, idNewStrictness_maybe,
idWorkerInfo,
idUnfolding,
idSpecialisation, idCoreRules,
idSpecialisation, idCoreRules, idHasRules,
idCafInfo,
idLBVarInfo,
idOccInfo,
......@@ -409,6 +409,9 @@ idSpecialisation id = specInfo (idInfo id)
idCoreRules :: Id -> [CoreRule]
idCoreRules id = specInfoRules (idSpecialisation id)
idHasRules :: Id -> Bool
idHasRules id = not (isEmptySpecInfo (idSpecialisation id))
setIdSpecialisation :: Id -> SpecInfo -> Id
setIdSpecialisation id spec_info = modifyIdInfo (`setSpecInfo` spec_info) id
......
......@@ -22,10 +22,9 @@ import CoreFVs ( idRuleVars )
import CoreUtils ( exprIsTrivial, isDefaultAlt )
import Id ( isDataConWorkId, isOneShotBndr, setOneShotLambda,
idOccInfo, setIdOccInfo, isLocalId,
isExportedId, idArity, idSpecialisation,
isExportedId, idArity, idHasRules,
idType, idUnique, Id
)
import IdInfo ( isEmptySpecInfo )
import BasicTypes ( OccInfo(..), isOneOcc, InterestingCxt )
import VarSet
......@@ -320,7 +319,7 @@ reOrderRec env (CyclicSCC (bind : binds))
| inlineCandidate bndr rhs = 2 -- Likely to be inlined
| not (isEmptySpecInfo (idSpecialisation bndr)) = 1
| idHasRules bndr = 1
-- Avoid things with specialisations; we'd like
-- to take advantage of them in the subsequent bindings
......
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment