projects
/
ghc-hetmet.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
[project @ 2003-07-30 10:01:46 by simonmar]
[ghc-hetmet.git]
/
ghc
/
compiler
/
coreSyn
/
CoreUtils.lhs
diff --git
a/ghc/compiler/coreSyn/CoreUtils.lhs
b/ghc/compiler/coreSyn/CoreUtils.lhs
index
5c26e0d
..
7e5fbb4
100644
(file)
--- a/
ghc/compiler/coreSyn/CoreUtils.lhs
+++ b/
ghc/compiler/coreSyn/CoreUtils.lhs
@@
-214,7
+214,12
@@
mkCoerce2 to_ty from_ty expr
mkSCC :: CostCentre -> Expr b -> Expr b
-- Note: Nested SCC's *are* preserved for the benefit of
-- cost centre stack profiling
mkSCC :: CostCentre -> Expr b -> Expr b
-- Note: Nested SCC's *are* preserved for the benefit of
-- cost centre stack profiling
+ -- Note2: We throw away an SCC on a single variable. If the
+ -- variable is a value, then there is no work to do in
+ -- evaluating it, and if it is a thunk, then it will be
+ -- attributed to its own CCS anyhow.
mkSCC cc (Lit lit) = Lit lit
mkSCC cc (Lit lit) = Lit lit
+mkSCC cc (Var v) = Var v
mkSCC cc (Lam x e) = Lam x (mkSCC cc e) -- Move _scc_ inside lambda
mkSCC cc (Note (SCC cc') e) = Note (SCC cc) (Note (SCC cc') e)
mkSCC cc (Note n e) = Note n (mkSCC cc e) -- Move _scc_ inside notes
mkSCC cc (Lam x e) = Lam x (mkSCC cc e) -- Move _scc_ inside lambda
mkSCC cc (Note (SCC cc') e) = Note (SCC cc) (Note (SCC cc') e)
mkSCC cc (Note n e) = Note n (mkSCC cc e) -- Move _scc_ inside notes