/LLVM-practice

Репозиторий для сдачи лабораторных работ по курсу Введение в теорию трансляторов

Primary LanguageLLVM

LLVM-practice

Репозиторий для сдачи лабораторных работ по курсу Введение в теорию трансляторов

Применяемый стек технологий: C++, LLVM, cpuset

Темы лабораторных работ:

  1. lab_01 - Peephole-оптимизация
  2. lab_02 - Оптимизация инвариантного кода цикла
  3. lab_03 - Векторизация
  4. lab_04 - Проверка стиля языка C

Сборка LLVM в WSL

  • Устанавливаем WSL
    • На оффициальном сайте достаточно подробно написано то, как установить WSL
    • Совет: лучше ставить WSL2 (т.е. вторую версию). О плюсах и минусах каждой версии можно прочитать здесь
    • Совет: для более удобного начала работы c WSL лучше поставить Ubuntu 18.04 и Windows Terminal
  • Скачиваем репозиторий проекта LLVM ("стабильной" 11-ой релизной версии) с GitHub и переходим в него:
    >> git clone https://github.com/llvm/llvm-project.git -b release/11.x
    >> cd llvm-project
  • Подготовка папок и cmake к сборке:
    >> mkdir build
    >> cd build
    >> cmake -DLLVM_ENABLE_PROJECTS="clang;libcxx;libcxxabi;opt" -G "Unix Makefiles" ../llvm
  • Готовим дополнительный файл подкачки (16 Гб):
    • Внимание: крайне рекомендуется использовать дополнительный файл подкачки. Без него возможны падения при сборке Clang (приблизительно на 94% сборки) из-за недостаточного размера оперативной памяти
    >> sudo fallocate -l 16G /swapfile
    >> sudo chmod 600 /swapfile
    >> sudo mkswap /swapfile && sudo swapon /swapfile
  • Собираем LLVM + Clang:
    >> make
    • Внимание: крайне не рекомендуется использовать ключ -jN (make -jN, N - число потоков) для параллельной сборки. Возможны падения, вызванные, скорее всего, гонкой данных (может не успеть собраться то, что идёт в include другому файлу, который уже собирается)
  • Убираем дополнительный файл подкачки после сборки:
    >> sudo swapoff /swapfile
    >> sudo rm /swapfile

Удачи!