Commits

Mark Lacey committed ef5187f713f
Do not allow inliner to work top-down unless we have new opportunities. We should not repeatedly attempt to inline into the same function unless we have produced new opportunities for inlining due to devirtualization or generic specialization. This was a silly goof from when I integrated devirtualization and generic specialization into the inliner. There is no reasonable test case for this. The radar has patches to the stdlib and perf test suite that can be used to reproduce this, but variants of these patches are already in our tree and do not exhibit the same behavior. This cuts the compile time of the SuperChars benchmark from 10 minutes to 1.7 seconds when the patches in the radar are applied. The vast majority of that improvement comes from not giving LLVM's CorrelatedValuePropagation a 20k basic block function (rdar://problem/20945561). Unfortuantely it looks like BinarySearch, Dictionary, PrimeNum, and Sim2DArray suffer as a result of this change. PrimeNum is the most significant regression, running around 30% slower. I'll open radars and if time permits we can attempt to recover some of that time by tweaking the inliner. Fixes rdar://problem/20878612. Swift SVN r28562