From c661b8b34b0eceb4213205e4c20e74407878cfb4 Mon Sep 17 00:00:00 2001 From: Andreas Klebinger Date: Thu, 4 Aug 2022 20:24:49 +0200 Subject: findExternalRules: Don't needlessly traverse the list of rules. --- compiler/GHC/Iface/Tidy.hs | 7 +++---- 1 file 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. -- cgit v1.2.1