Какие проходы оптимизации сделаны для -O4 в Clang?

Мы пытаемся реализовать jit-компилятор, чья производительность должна быть такой же, как при использовании clang -o4. Есть ли место, где я мог бы легко получить список проходов оптимизации, вызванных clang с -o4?

2 ответа

Решение

Насколько я знаю, -O4 означает то же самое, что и -O3 + с поддержкой LTO (Link Time Optimization). Смотрите следующие фрагменты кода:

Также смотрите здесь:

Вы можете создавать битовые файлы из clang, используя -emit-llvm или -flto, или флаг -O4, который является синонимом -O3 -flto.

Для оптимизаций, используемых с флагом -O3, смотрите этот файл PassManagerBuilder.cpp (ищите переменную OptLevel - она ​​будет иметь значение 3).

Обратите внимание, что с LLVM версии 5.1 -O4 больше не подразумевается оптимизация времени соединения. Если вы хотите, вам нужно передать -flto. См. Примечания к выпуску Xcode 5.

Другие вопросы по тегам