Implementation of Memory Scalability Approach for LLVM-Based Link-Time Optimization and Static Analyzing Systems
Link-time optimization and static analyzing systems scalability problem is of current importance: in spite of growth of performance and memory volume of modern computers programs grow in size and complexity as much. In particular, this is actual for such complex and large programs as browsers, operating systems, etc. To improve performance of these programs as much as possible, there are several aggressive optimising techniques like interprocedural optim ization a nd profile-guided optimization. These techniques applied to large programs claim for large memory and need a lot of time to be performed. This paper introduces memory scalability approach for link-time optimization system and proposes technique for applying this approach to static analyzing systems. The approach involve several steps: adding a summary information to intermediate representation at compile time, reading declarations and summaries from IR files, analysing summary and computing call graph at special pre-analysis phase, lazy code loading during optimization phase and code unloading on demand. Proposed approach was implemented as the linking tool based on the LLVM GOLD-plugin. The tool was tested on SPEC CPU2000 benchmark suite. Preliminary results show increasing of average intermediate code on 6%, increasing of average time on 0.2% and increasing of total memory usage to 36%.
Proceedings of the Institute for System Programming, vol. 27, issue 6, 2015, pp. 97-110.
ISSN 2220-6426 (Online), ISSN 2079-8156 (Print).
DOI: 10.15514/ISPRAS-2015-27(6)-7Full text of the paper in pdf (in Russian) Back to the contents of the volume