X-Git-Url: http://git.megacz.com/?p=ghc-hetmet.git;a=blobdiff_plain;f=compiler%2FsimplCore%2FLiberateCase.lhs;h=9fe6b87481de6c01cd1889e7e6173559f26570d0;hp=ab7923947a97123ff75241e58ebcb95ab2955c79;hb=7e8cba32c6f045dde3db8a9ddc9831ec8ab4ed43;hpb=bb924bddcd3988d50b4cf2afbd8895e886a23520 diff --git a/compiler/simplCore/LiberateCase.lhs b/compiler/simplCore/LiberateCase.lhs index ab79239..9fe6b87 100644 --- a/compiler/simplCore/LiberateCase.lhs +++ b/compiler/simplCore/LiberateCase.lhs @@ -18,7 +18,6 @@ import UniqSupply ( UniqSupply ) import SimplMonad ( SimplCount, zeroSimplCount ) import Id import VarEnv -import Name ( localiseName ) import Util ( notNull ) \end{code} @@ -171,10 +170,10 @@ libCaseBind env (Rec pairs) -- processing the rhs with an *un-extended* environment, so -- that the same process doesn't occur for ever! -- - extended_env = addRecBinds env [ (adjust binder, libCase env_body rhs) + extended_env = addRecBinds env [ (localiseId binder, libCase env_body rhs) | (binder, rhs) <- pairs ] - -- Two subtle things: + -- The call to localiseId is needed for two subtle reasons -- (a) Reset the export flags on the binders so -- that we don't get name clashes on exported things if the -- local binding floats out to top level. This is most unlikely @@ -184,7 +183,6 @@ libCaseBind env (Rec pairs) -- (b) Make the name an Internal one. External Names should never be -- nested; if it were floated to the top level, we'd get a name -- clash at code generation time. - adjust bndr = setIdNotExported (setIdName bndr (localiseName (idName bndr))) rhs_small_enough (id,rhs) = idArity id > 0 -- Note [Only functions!]