2014-01-30 3 views
7

Недавно я начал работать с Clang/LLVM и хотел бы знать, есть ли какая-либо конкретная документация о том, что делают уровни оптимизации -Ox?Значение уровней оптимизации LLVM

Я не смог найти много на странице документации LLVM. Может ли кто-нибудь поделиться несколькими ссылками?

Спасибо.

ответ

14

Документация параметров командной строки Clang действительно очень бедна, и, в частности, вы правы, что почти нет объяснений того, что делает уровень оптимизации.

FreeBSD, однако, не добавить man page with a useful summary:

-O0 -O1 -O2 -Os -Oz -O3 -O4
Укажите, какой уровень оптимизации использования. -O0 означает «no optimization»: этот уровень компилирует самый быстрый и генерирует самый отлаживаемый код . -O2 - это умеренный уровень оптимизации , который обеспечивает большую оптимизацию. -Os - это -O2 с дополнительными оптимизациями для уменьшения размера кода. -Oz, как -O (и, следовательно, -O2), , но далее уменьшает размер кода. -O3, как -O2, за исключением того, что он обеспечивает оптимизацию, которая занимает больше времени для выполнения или может генерировать более крупный код (в попытке ускорить выполнение программы ). На поддерживаемых платформах -O4 обеспечивает время соединения ; объектные файлы хранятся в файле битового кода LLVM , а оптимизация всей программы выполняется во время соединения. -O1 - где-то между -O0 и -O2.

Если вы хотите, чтобы найти точный список проходов, выполненных для каждой оптимизации см этот StackOverflow вопрос:

Смежные вопросы