Универсальная Библиотека Трансляции

Универсальная Библиотека Трансляции (УБТ) содержит реализацию алгоритмов анализов и оптимизаций. С ее помощью могут быть созданы различные схемы компиляции, сконфигурированные и реализованные как раздельные продукты.

Аналитическая часть библиотеки содержит реализацию современных алгоритмов потокового анализа, анализа данных, межпроцедурного анализа, анализа цилковых зависимостей и пр. Здесь собраны самые современные достижения компиляторостроения. Алгоритмы, реализованные в этой библиотеке были опробованы в промышленных компиляторах и доказали свою высокую эффективность.

Аналитическая часть УБТ включает в себя:

Анализ потока данных - нумерация Значений
Анализ потока управления
Определение инвариантов
Определение индуктивных переменных
Анализ цикловых зависимостей
Локальный анализ указателей
Анализ зависимостей на ациклических участках
Межпроцедурный анализ потока управления
Межпроцедурный анализ потока данных - чувствительный/нечувствительный и потоку управления/вызывающему контексту пропагатор (констант, выравниваний, диапазонов, указателей), нумерация значений, модели динамической памяти
Статический предсказатель профиля

Оптимизирующая часть УБТ содержит:

Пропагацию констант
Оптимизация с использованием машинных идеом
Сбор общих подвыражений
Удаление избыточных пересылок
Удаление избыточных операций обращения в память
Удаление частично избыточных вычислений
Удаление мертвого кода
Вынос инвариантных вычислений
Перенос на скалярные переменные
Понижение силы операций
Редуцирование инвариантных переменных
Балансировка и реассоциация переменных
Оптимизации на предикатном коде
Техника дублирования узлов
Техника выделеиение региона с реальным профилем
Оптимизация условий
Формирование гнезда циклов
Дублирование итераций цикла
Открутка итераций цикла
Дублирование цикла по условию
Расщепление цикла (по условию, по индексу)
Дублирование итераций внешнего цикла с последующим слиянием внутренних циклов
Техника динамического разрешения конфликтов
Создание версий цикла
Предподкачка
Программная конверизация
Вынос векторных инвариантов из цикла
Фрагментация итерационного пространства цикла
Сдвиг итерационного пространства цикла
Изменение порядка исполнения циклов в гнезде
Реорганизация данных
Техника межпроцедурной предподкачки
Векторизация
Техника распараллеливания на несколько потоков
Планирование (включая использование предикатности и спекулятивности)
Планирование ациклического региона списком
Конверизация циклов
Глобальное планирование ациклических участков
Глобальное планирование циклов
Распределение регистров в конверизованных циклах
Глобальное распределение регистров