+unionRuleBase (rule_ids1, black_ids1) (rule_ids2, black_ids2)
+ = (plusUFM_C merge_rules rule_ids1 rule_ids2,
+ unionVarSet black_ids1 black_ids2)
+ where
+ merge_rules id1 id2 = let rules1 = idSpecialisation id1
+ rules2 = idSpecialisation id2
+ new_rules = foldl (addRule id1) rules1 (rulesRules rules2)
+ in
+ setIdSpecialisation id1 new_rules
+
+-- prepareLocalRuleBase takes the CoreBinds and rules defined in this module.
+-- It attaches those rules that are for local Ids to their binders, and
+-- returns the remainder attached to Ids in an IdSet. It also returns
+-- Ids mentioned on LHS of some rule; these should be blacklisted.
+