Commits

Erik Eckstein committed 4491f2a00da
Improvement of the inlining heuristic. Main changes: *) Instruction costs are not counted for blocks which are dead after inlining *) Terminator instructions which get constant after inlining increase the threshold *) Calls inside loops increase the threshold In theory this should be a step towards making the performance not so dependent on the inlining heuristic. But I must admit that I still did some fine tuning of all the parameters to get the best results. Improvements in the benchmarks: -O: Chars: +11% CommonMarkRender: +11% DollarReduce: +22% ForLoops: +22% Forest: +10% HeapSort: +36% ImageProc: +14% StrCat: +14% StrComplexWalk: +70% StrToInt: +11% StringWalk: +99% -Ounchecked: Ary: +40% Ary2: +30% EditDistance: +22% Forest: +18% HeapSort: +50% Histogram: +11% StrCat: +12% StrComplexWalk: +63% StrSplitter: +11% StrToInt: +17% StringWalk: +75% Regressions (I will file radars for them): -Ounchecked: PolymorphicCalls: -21% QuickSort: -22% Rectangles: -12% Code size of the PerfTests_O decreased by 8% Code size of the PerfTests_Ounchecked increased by 1% Swift SVN r24801