diff options
author | Andreas Klebinger <klebinger.andreas@gmx.at> | 2022-08-04 20:24:49 +0200 |
---|---|---|
committer | Marge Bot <ben+marge-bot@smart-cactus.org> | 2022-08-04 23:02:20 -0400 |
commit | 16333ad780300432b974f604d9fc20ad5c6aa773 (patch) | |
tree | 97dfe9cf749970f23190c152030b9fa24b5c163f | |
parent | 6c7cd50fb38f4038f6a5e2d11a5e2bf1ae93ceff (diff) | |
download | haskell-16333ad780300432b974f604d9fc20ad5c6aa773.tar.gz |
findExternalRules: Don't needlessly traverse the list of rules.
-rw-r--r-- | compiler/GHC/Iface/Tidy.hs | 7 |
1 files changed, 3 insertions, 4 deletions
diff --git a/compiler/GHC/Iface/Tidy.hs b/compiler/GHC/Iface/Tidy.hs index 52a3291375..1edd3cb9bf 100644 --- a/compiler/GHC/Iface/Tidy.hs +++ b/compiler/GHC/Iface/Tidy.hs @@ -976,7 +976,8 @@ findExternalRules :: TidyOpts findExternalRules opts binds imp_id_rules unfold_env = (trimmed_binds, filter keep_rule all_rules) where - imp_rules = filter expose_rule imp_id_rules + imp_rules | (opt_expose_rules opts) = filter expose_rule imp_id_rules + | otherwise = [] imp_user_rule_fvs = mapUnionVarSet user_rule_rhs_fvs imp_rules user_rule_rhs_fvs rule | isAutoRule rule = emptyVarSet @@ -997,9 +998,7 @@ findExternalRules opts binds imp_id_rules unfold_env -- RHS: the auto rules that might mention a binder that has -- been discarded; see Note [Trimming auto-rules] - expose_rule rule - | not (opt_expose_rules opts) = False - | otherwise = all is_external_id (ruleLhsFreeIdsList rule) + expose_rule rule = all is_external_id (ruleLhsFreeIdsList rule) -- Don't expose a rule whose LHS mentions a locally-defined -- Id that is completely internal (i.e. not visible to an -- importing module). NB: ruleLhsFreeIds only returns LocalIds. |