Commit d88a1d8c authored by simonpj's avatar simonpj
Browse files

[project @ 2001-12-06 09:21:31 by simonpj]

Fix the simplIdInfo inconsistency Sigbjorn found
parent 7fe540d8
...@@ -610,13 +610,13 @@ simplLetId subst@(Subst in_scope env) old_id ...@@ -610,13 +610,13 @@ simplLetId subst@(Subst in_scope env) old_id
| otherwise | otherwise
= delSubstEnv env old_id = delSubstEnv env old_id
simplIdInfo :: Subst -> IdInfo -> Id -> Id simplIdInfo :: Subst -> IdInfo -> IdInfo
-- Used by the simplifier to compute new IdInfo for a let(rec) binder, -- Used by the simplifier to compute new IdInfo for a let(rec) binder,
-- subsequent to simplLetId having zapped its IdInfo -- subsequent to simplLetId having zapped its IdInfo
simplIdInfo subst old_info bndr simplIdInfo subst old_info
= case substIdInfo subst isFragileOcc old_info of = case substIdInfo subst isFragileOcc old_info of
Just new_info -> bndr `setIdInfo` new_info Just new_info -> new_info
Nothing -> bndr `setIdInfo` old_info Nothing -> old_info
\end{code} \end{code}
\begin{code} \begin{code}
......
...@@ -299,7 +299,7 @@ simplNonRecBind env bndr rhs rhs_se cont_ty thing_inside ...@@ -299,7 +299,7 @@ simplNonRecBind env bndr rhs rhs_se cont_ty thing_inside
let let
-- simplLetBndr doesn't deal with the IdInfo, so we must -- simplLetBndr doesn't deal with the IdInfo, so we must
-- do so here (c.f. simplLazyBind) -- do so here (c.f. simplLazyBind)
bndr'' = simplIdInfo (getSubst env) (idInfo bndr) bndr' bndr'' = bndr' `setIdInfo` simplIdInfo (getSubst env) (idInfo bndr)
env1 = modifyInScope env bndr'' bndr'' env1 = modifyInScope env bndr'' bndr''
in in
simplStrictArg AnRhs env1 rhs rhs_se (idType bndr') cont_ty $ \ env rhs1 -> simplStrictArg AnRhs env1 rhs rhs_se (idType bndr') cont_ty $ \ env rhs1 ->
...@@ -447,7 +447,7 @@ simplLazyBind env top_lvl is_rec bndr bndr' rhs rhs_se ...@@ -447,7 +447,7 @@ simplLazyBind env top_lvl is_rec bndr bndr' rhs rhs_se
-- --
-- NB: does no harm for non-recursive bindings -- NB: does no harm for non-recursive bindings
let let
bndr'' = simplIdInfo (getSubst rhs_se) (idInfo bndr) bndr' bndr'' = bndr' `setIdInfo` simplIdInfo (getSubst env) (idInfo bndr)
env1 = modifyInScope env bndr'' bndr'' env1 = modifyInScope env bndr'' bndr''
rhs_env = setInScope rhs_se env1 rhs_env = setInScope rhs_se env1
is_top_level = isTopLevel top_lvl is_top_level = isTopLevel top_lvl
......
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