Вот, только что решил таки проверить: а что будет, если собрать не
с -O2, а с -O3? Размер прошивки с 35кБ вырос аж до 44кБ!!! Вот так
мне gcc наоптимизировал (видимо, все, что только можно,
позаинлайнил). Проверил и с другими опциями: -O1 - 29кБ, -Os - 26кБ.
Конечно, думаю, что при -O3 таки пошустрей будет работать, чем при -O2, но здесь уже нужно каждую конкретную ситуацию рассматривать. Скажем, в F303 у меня еще дофига места, а вот в STM32F103C6T6 всего-то 32кБ флеша…
UPD: вот япона ж мать! В DEBUG-режиме прошивка 32кБ заняла - на 3кБ меньше (хоть там напичкано всякого отладочного выхлопа в USB). Единственное отличие дебаг от релиз режима - флаги -DEBUG и -flto. То бишь, LTO может еще и увеличить объем кода (раньше мне только уменьшала)…