Я читал опции оптимизации для GCC, когда нашел опцию -funroll-all-loops
.
Его описание гласит:
Разверните все циклы, даже если их количество итераций не определено, когда цикл вводится. Обычно это делает программы медленнее. '-funroll-all-loops' подразумевает те же опции, что и '-funroll-loops'
Как может компилятор развернуть цикл, если его количество итераций неизвестно во время компиляции? Разве компилятор не нуждается в этой информации, чтобы развернуть его? Какой соответствующий код C он генерирует, и в каких контекстах это может быть полезно, если оно обычно делает программы медленнее?