А жаль. Как я понимаю, ввиду наличия ОС и вообще, сложности
проекта, переехать на GCC не вариант - требуется большая работа по
замене всяких intrinsic и управления прерываниями, а так же долгое
тестирование и отладка новых багов. У вас multi-file compilation включена?
Вот сравнение IAR EWARM 8.32.1 с GCC 9.3.1 (компилятор новее вашего, а GCC старше нынешнего):
UPD3
Спасибо Shturman-0 за подсказку как правильно использовать флаг "-flto".
Итак, -flto ставится и линкеру и компилятору.
...
В результате размер прошивки составил 11772 байта (для gcc 7). Gcc 9.3.1 дает 12148
GCC (-flto) Размер прошивки 11772
IAR EWARM 8.32.1 Размер прошивки 12746
Как правило, с LTO, и код сокращается, и время выполнения. Я верю, что современный GCC даст фору старому Яру процентов 10.
https://habr.com/ru/articles/527820/