Экспериментатор (05.06.2018 12:14, просмотров: 1) ответил SciFi на Вообще-то, чтобы "короче", надо -Os. А вот эти -O123 - это для скорости. Скажем, разматывание цикла может добавить кода огого.
Заглянул в документацию: "-O2 turns on all optional optimizations except for loop unrolling (-funroll-loops), function inlining (-finline-functions), and strict aliasing optimizations (-fstrict-aliasing). It also turns on Frame Pointer elimination (-fomit-frame-pointer). As compared to -O, this option increases both compilation time and the performance of the generated code."
Соответственно, циклы должно начинать разматывать на -O3.
В моем случае были виноваты inline вставки для прерываний, которые на -O1 не прилинковываются, как было задумано. Кстати, на -Os - тоже. Проблему решает сборка проекта с идивидуальными опциями для каждого модуля.
Раньше об этом не задумывался, так как стремился использовать в нужных местах макросы. Кстати, код с ними все-равно примерно на 3% меньше наилучшего достигнутого результата с inline.