Skip to content
GitLab
Projects
Groups
Snippets
/
Help
Help
Support
Community forum
Keyboard shortcuts
?
Submit feedback
Sign in / Register
Toggle navigation
Menu
Open sidebar
Tobias Decking
GHC
Commits
a515009d
Commit
a515009d
authored
Nov 10, 2006
by
simonpj@microsoft.com
Browse files
Comments and cosmetics only
parent
308cb59e
Changes
1
Hide whitespace changes
Inline
Side-by-side
compiler/stranal/DmdAnal.lhs
View file @
a515009d
...
...
@@ -262,8 +262,8 @@ dmdAnal sigs dmd (Case scrut case_bndr ty [alt@(DataAlt dc,bndrs,rhs)])
-- The insight is, of course, that a demand on y is a demand on the
-- scrutinee, so we need to `both` it with the scrut demand
scru
t_dmd = Eval (Prod [idNewDemandInfo b | b <- bndrs', isId b])
`both`
al
t_dmd = Eval (Prod [idNewDemandInfo b | b <- bndrs', isId b])
scrut_dmd = alt_dmd
`both`
idNewDemandInfo case_bndr'
(scrut_ty, scrut') = dmdAnal sigs scrut_dmd scrut
...
...
@@ -489,7 +489,12 @@ If we marked r as having the CPR property, then we'd w/w into
in ...
But now r is a thunk, which won't be inlined, so we are no further ahead.
But consider
f x = let r = case expensive of (a,b) -> (b,a)
in if foo r then r else (x,x)
Does f have the CPR property? Well, no.
However, if the strictness analyser has figured out (in a previous
iteration) that it's strict, then we DON'T need to forget the CPR info.
...
...
@@ -986,7 +991,7 @@ lub d1@(Eval _) d2 = d2 `lub` d1 -- Bot,Abs,Top,Call,Defer
lub (Box d1) (Box d2) = box (d1 `lub` d2)
lub d1@(Box _) d2 = d2 `lub` d1
lubs = zipWithDmds lub
lubs
ds1 ds2
= zipWithDmds lub
ds1 ds2
---------------------
-- box is the smart constructor for Box
...
...
@@ -1093,7 +1098,7 @@ both d1@(Eval ds1) d2 = d2 `both` d1
both (Defer ds1) (Defer ds2) = deferEval (ds1 `boths` ds2)
both d1@(Defer ds1) d2 = d2 `both` d1
boths = zipWithDmds both
boths
ds1 ds2
= zipWithDmds both
ds1 ds2
\end{code}
...
...
Write
Preview
Supports
Markdown
0%
Try again
or
attach a new file
.
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment