Commits

Michael Gottesman committed 9cca0a7a947
[loop-arc] Wire up the loop summary information to the ARC optimizer. Currently we are very conservative. This means that: 1. If we see any decrement in a loop, we will treat the loop like a guaranteed call. 2. If we just see a use in a loop, we will treat the loop like a use. This is of course per ptr using the same effects propagation logic that ARC normally uses so as that improves this will improve as well. On my local machine I am seeing the following perf changes: Legend: Left: before. Right: after. -------------------------------------------------------------------------------- TITLE LEFT RIGHT RIGHT - LEFT RIGHT/LEFT LinkedList 18128.00 11865.00 -6263.00 0.65 BenchLangCallingCFunction 445.00 390.00 -55.00 0.88 ArrayInClass 114.00 105.00 -9.00 0.92 StdlibSort 5140.00 4837.00 -303.00 0.94 Roman 20.00 21.00 1.00 1.05 Hash 3279.00 3478.00 199.00 1.06 RGBHistogram 9282.00 9954.00 672.00 1.07 RangeReplaceableCollectionPlusDefault 1894.00 2099.00 205.00 1.11 DijkstraNaive 253.00 294.00 41.00 1.16 BenchLangArray 284.00 345.00 61.00 1.21 TwoSum 3248.00 4030.00 782.00 1.24 StringBuilder 4249.00 5329.00 1080.00 1.25 SetExclusiveOr 9201.00 13885.00 4684.00 1.51 SetUnion 6505.00 11212.00 4707.00 1.72 SetIntersect 2788.00 5647.00 2859.00 2.03 DictionaryHashableStruct 4231.00 14232.00 10001.00 3.36 BenchLangSimpleControlFlow 33.00 312.00 279.00 9.45 rdar://22238729 I am going to look at the LinkedList regression in rdar://23268514.