Abstract

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, operation systems, etc. This paper introduces memory scalability approach for LLVM-based link-time optimization system and proposes technique for applying this approach to static analyzing systems. Proposed approach was implemented and tested on SPEC CPU2000 benchmark suite [2].

Highlights

  • Традиционный метод сборки программ из исходного кода состоит из двух этапов: компиляции и связывания

  • This paper introduces memory scalability approach for link-time optimization system and proposes technique for applying this approach to static analyzing systems

  • Труды Института системного программирования РАН Том 26, выпуск 3, 2014, стр

Read more

Summary

Введение

Традиционный метод сборки программ из исходного кода состоит из двух этапов: компиляции и связывания. Для сборки с оптимизациями времени связывания таких программ, как операционные системы или интернет-браузеры, состоящих из нескольких тысяч файлов исходного кода, может требоваться память, которой не обладают не только обычные настольные компьютеры, − но и далеко не все серверные архитектуры способны собрать такие программы без задействования отгрузки на диск. Во время генерации промежуточного кода компилятор получает файлы с кодом на исходном языке программирования, проводит небольшое количество локальных оптимизаций в каждом файле отдельно, а также генерирует дополнительную информацию о зависимостях между функциями в так называемые аннотации, представляющие собой некую информацию о программе, необходимую для проведения межпроцедурного анализа. 1. Схема работы систем оптимизаций времени связывания Второй этап, как правило, проходит во время связывания и читает файлы, полученные на первом этапе, анализирует межпроцедурные зависимости, производит некоторые оптимизирующие преобразования, и снова генерирует файлы в промежуточном представлении и некоторое количество дополнительной информации. Эта фаза у разных компиляторов может быть параллелизуемой или непараллелизуемой, и в результате может получаться либо один объектный файл, либо несколько, которые впоследствии передаются стандартному системному компоновщику

Особенности сборки программ в системе LLVM
Управление потреблением памяти
Предлагаемый подход к управлению памятью для систем межмодульных оптимизаций
Предлагаемый подход к управлению памятью для систем статического анализа
Реализация метода ленивой загрузки в системе LLVM
Реализация легковесного построения графа вызовов
Результаты работы
Findings
Заключение
Full Text
Paper version not known

Talk to us

Join us for a 30 min session where you can share your feedback and ask us any queries you have

Schedule a call

Disclaimer: All third-party content on this website/platform is and will remain the property of their respective owners and is provided on "as is" basis without any warranties, express or implied. Use of third-party content does not indicate any affiliation, sponsorship with or endorsement by them. Any references to third-party content is to identify the corresponding services and shall be considered fair use under The CopyrightLaw.