Commits

Mark Lacey committed 75cdaa327f3
Run more function passes in a single run of the pass manager. This commit moves the SILLinker pass out of AddSSAPasses, so that we run more function passes on each function before moving up to it's callers. Now the only remaining module passes in AddSSAPasses are GlobalOpt and LetPropertiesOpt, which run only when we call AddSSAPasses for the MidLevel optimizations. This commit also adds the high level loop opt passes onto the same pass run. As a result of this and moving SILLinker out of AddSSAPasses, we now run far more passes together on a given function before moving up the call graph to the callers. The net result is that I am now seeing approximately a 2% reduction in stdlib compile times, with only a single significant performance regression (there are some other minor improvements and regressions, and some major improvements with -Ounchecked). The 2% reduction appears to come largely from the mechanism in the pass manager that skips running passes if we've not made any changes to a function since the last time the pass was run.