Proceedings of ISP RAS

Applying two-stage LLVM-based compilation approach to application deployment via cloud storage.

Sergey Gaissaryan, Shamil Kurmangaleev, Kseniya Dolgorukova, Valery Savchenko, Sevak Sargsyan.


The process of software distribution via the app stores is as follows: software developer sends application to the online store and it becomes available to the user. To remain competitive software product for a long time, the developer needs to ensure the functioning of the application on most hardware and software platforms. Typically, this problem is solved as follows: an application either compiled and optimized developer repeatedly for every new platform, followed by the addition of a new shop in binary versions, or implemented using a dynamic language.

The paper describes two-stage compilation approach for C/C++ languages that allows deploying application in the LLVM (low level virtual machine) intermediate representation. The LLVM modifications for optimizing code generation time as well as the profile-based optimizations are presented. Also approach is presented and evaluated to dividing the linking process on parallel threads to reduce compile time for large applications.

The specialized application cloud storage architecture is also suggested. We describe implementation of the mechanism for applying profile information, collected on client side on the application server. Also the profile exchange protocol and the specification of message data format are described.


Two-stage compilation, program optimization, LLVM, cloud storage


Proceedings of the Institute for System Programming, vol. 26, issue 1, 2014, pp. 315-326.

ISSN 2220-6426 (Online), ISSN 2079-8156 (Print).

DOI: 10.15514/ISPRAS-2014-26(1)-11

Full text of the paper in pdf Back to the contents of the volume