diff options
author | nineonine <mail4chemik@gmail.com> | 2021-08-23 09:41:59 -0700 |
---|---|---|
committer | Simon Peyton Jones <simonpj@microsoft.com> | 2021-11-15 23:22:30 +0000 |
commit | 89491f38b7cc865eea989fb60a8018ed1d27ab7f (patch) | |
tree | 1ad34917be1e05d0018a1163546a42f6418c54cc | |
parent | 4e698ffaf857167e97f4d1ce84980fb2f6844ce3 (diff) | |
download | haskell-89491f38b7cc865eea989fb60a8018ed1d27ab7f.tar.gz |
Revert nameIsExternalOrFrom for now
-rw-r--r-- | compiler/GHC/Stg/FVs.hs | 20 | ||||
-rw-r--r-- | compiler/GHC/Types/Name.hs | 8 |
2 files changed, 15 insertions, 13 deletions
diff --git a/compiler/GHC/Stg/FVs.hs b/compiler/GHC/Stg/FVs.hs index 50854f73f8..caf28ce43e 100644 --- a/compiler/GHC/Stg/FVs.hs +++ b/compiler/GHC/Stg/FVs.hs @@ -48,7 +48,7 @@ import GHC.Prelude hiding (mod) import GHC.Stg.Syntax import GHC.Types.Id -import GHC.Types.Name (Name, nameIsExternalFrom) +import GHC.Types.Name (Name, nameIsLocalOrFrom) import GHC.Types.Name.Env import GHC.Utils.Outputable import GHC.Utils.Panic @@ -204,9 +204,11 @@ bindingFVs bounds env body_fv b = pairs' = zip bndrs rhss id_sets = delDVarSetList (unionDVarSets (body_fv:rhs_id_sets)) bndrs where - var_fvs :: Var -> TopIds - var_fvs v | nameIsExternalFrom (mod env) (idName v) = unitVarSet v - | otherwise = emptyVarSet + var_fvs :: NestedIds -> Var -> TopIds + var_fvs bounds v + | not (elemVarSet v bounds) + , nameIsLocalOrFrom (mod env) (idName v) = unitVarSet v + | otherwise = emptyVarSet exprFVs :: NestedIds -> Env -> StgExpr -> (CgStgExpr, TopIds, DIdSet) @@ -215,7 +217,7 @@ bindingFVs bounds env body_fv b = go (StgApp f as) | (args_fvs, id_set) <- argsFVs bounds env as = ( StgApp f as - , var_fvs f `unionVarSet` args_fvs + , var_fvs bounds f `unionVarSet` args_fvs , unionDVarSet (id_set `dVarSetIntersectVarSet` locals env) (mkFreeVarSet env [f])) go (StgLit lit) = (StgLit lit, emptyVarSet, emptyDVarSet) go (StgConApp dc n as tys) @@ -265,12 +267,12 @@ bindingFVs bounds env body_fv b = = (StgRhsCon ccs dc mu ts bs, fvs, id_set) argsFVs :: NestedIds -> Env -> [StgArg] -> (TopIds, DIdSet) - argsFVs _ env = foldl' f (emptyVarSet, emptyDVarSet) + argsFVs bounds env = foldl' f (emptyVarSet, emptyDVarSet) where - f (fvs,ids) StgLitArg{} = (fvs, ids ) - f (fvs,ids) (StgVarArg v) = (fvs', ids') + f (fvs,ids) StgLitArg{} = (fvs, ids) + f (fvs,ids) (StgVarArg v) = (fvs', ids') where - !fvs' = var_fvs v `unionVarSet` fvs + !fvs' = var_fvs bounds v `unionVarSet` fvs !ids' | v `elemVarSet` locals env = extendDVarSet ids v | otherwise = ids diff --git a/compiler/GHC/Types/Name.hs b/compiler/GHC/Types/Name.hs index 9be42a7525..2c3cfac8c5 100644 --- a/compiler/GHC/Types/Name.hs +++ b/compiler/GHC/Types/Name.hs @@ -64,7 +64,7 @@ module GHC.Types.Name ( isWiredInName, isWiredIn, isBuiltInSyntax, isHoleName, wiredInNameTyThing_maybe, - nameIsLocalOrFrom, nameIsExternalFrom, nameIsHomePackage, + nameIsLocalOrFrom, nameIsExternalOrFrom, nameIsHomePackage, nameIsHomePackageImport, nameIsFromExternalPackage, stableNameCmp, @@ -357,10 +357,10 @@ nameIsLocalOrFrom from name | Just mod <- nameModule_maybe name = is_interactive_or_from from mod | otherwise = True -nameIsExternalFrom :: Module -> Name -> Bool --- ^ Returns True if the name is external or from the 'interactive package +nameIsExternalOrFrom :: Module -> Name -> Bool +-- ^ Returns True if the name is external or from the 'interactive' package -- See documentation of `nameIsLocalOrFrom` function -nameIsExternalFrom from name +nameIsExternalOrFrom from name | Just mod <- nameModule_maybe name = is_interactive_or_from from mod | otherwise = False |