projects
/
ghc-hetmet.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
Make recursion and RULES interact better
[ghc-hetmet.git]
/
compiler
/
basicTypes
/
BasicTypes.lhs
diff --git
a/compiler/basicTypes/BasicTypes.lhs
b/compiler/basicTypes/BasicTypes.lhs
index
d73e4f1
..
e6e3a90
100644
(file)
--- a/
compiler/basicTypes/BasicTypes.lhs
+++ b/
compiler/basicTypes/BasicTypes.lhs
@@
-365,12
+365,14
@@
defn of OccInfo here, safely at the bottom
\begin{code}
data OccInfo
\begin{code}
data OccInfo
- = NoOccInfo
+ = NoOccInfo -- Many occurrences, or unknown
+
+ | RulesOnly -- Occurs only in the RHS of one or more rules
| IAmDead -- Marks unused variables. Sometimes useful for
-- lambda and case-bound variables.
| IAmDead -- Marks unused variables. Sometimes useful for
-- lambda and case-bound variables.
- | OneOcc !InsideLam
+ | OneOcc !InsideLam -- Occurs exactly once, not inside a rule
!OneBranch
!InterestingCxt
!OneBranch
!InterestingCxt
@@
-422,6
+424,7
@@
isFragileOcc other = False
instance Outputable OccInfo where
-- only used for debugging; never parsed. KSW 1999-07
ppr NoOccInfo = empty
instance Outputable OccInfo where
-- only used for debugging; never parsed. KSW 1999-07
ppr NoOccInfo = empty
+ ppr RulesOnly = ptext SLIT("RulesOnly")
ppr IAmALoopBreaker = ptext SLIT("LoopBreaker")
ppr IAmDead = ptext SLIT("Dead")
ppr (OneOcc inside_lam one_branch int_cxt)
ppr IAmALoopBreaker = ptext SLIT("LoopBreaker")
ppr IAmDead = ptext SLIT("Dead")
ppr (OneOcc inside_lam one_branch int_cxt)