#loops #gcc #optimization #compiler-optimization
#циклы #gcc #оптимизация #оптимизация компилятора
Вопрос:
Меня интересует опция оптимизации -funswitch-loops
отключения переключения в GCC, в частности, что на самом деле ее позволяет. Согласно документации:
Следующие параметры управляют оптимизациями, которые могут повысить производительность, но не включены никакими
-O
параметрами. В этом разделе представлены экспериментальные варианты, которые могут привести к нарушению кода.…
-funswitch-loops
Переместите ветви с условиями, инвариантными к циклу, из цикла, с дубликатами цикла на обеих ветвях (модифицированными в соответствии с результатом условия).
Включено
-fprofile-use
и-fauto-profile
.
Итак, если я еще не использую -fprofile-use
или -fauto-profile
, кажется, мне нужно явно добавить -funswitch-loops
в свой список флагов компилятора, чтобы активировать отключение переключения цикла. Достаточно справедливо. Хотя в другом месте в той же документации мы находим
-O3
Оптимизируйте еще больше.
-O3
включает все оптимизации, указанные,-O2
а также включает следующие флаги оптимизации:…
-funswitch-loops
…
Таким образом, в документации, похоже, утверждается, что -funswitch-loops
он включен -O3
, но также и то, что он не включен ни одним из -O
параметров. Какой из них это?
Ответ №1:
Вы можете скомпилировать с -v -Q
, чтобы увидеть список всех действующих параметров оптимизации. -v -Q -O3
Я вижу, что он включен в gcc 10.2 -funswitch-loops
.
Таким образом, его список в разделе «не включен никакими -O
параметрами», по-видимому, является ошибкой. Вы можете сообщить об этом как об ошибке документации.