-
Simon Peyton Jones authored
Improve IdInfo substitution To get rules to work nicely, we need to make rules for recursive functions active in the RHS of the very recursive function itself. This can be done nicely: the change is to move the calls to simplIdInfo in Simplify to an earlier place. The second thing is that when doing simple expression substitution in a rule (which we do during simplification for rules attached to an Id) we were zapping the occurrence info carefully pinned on the rule binders when the rule was put into the Id's rules. This in turn meant that the simplifer ran more iterations than necessary when rules were fired. (Andrew Tolmach discovered this.) So I tidied up the interface to Subst a little. The relevant functions that have changed are simplBndr, simplBndrs, simplLetId, simplIdInfo, substAndCloneId, substAndCloneIds, substAndCloneRecIds, There are consequential changes in other modules, but it compiles at least the whole standard libraries happily, and the codegen tests, so I'm reasonably confident in it. But watch out for new strange happenings.
09518039