Вообще если хочется делать сравнения нужно выкладывать сам проект, а так же полные строки командной строки. Мои мысли по GCC: - очень много для оптимизации по размеру дает full LTO. Совершенно неясно была она использована или нет. Причем для большей содомии и угара гцц'шники её время от времени ломают.
- используемая библиотека? По моему опыту если не использовать *print* фукнции самая маленькая прибавка у newlib-nano, если использовать redlib, но если нужен C++, а не чистый C придется использовать newlib*
- Содомия и угар от GCC имеет известную регрессию после GCC 4.8 появился новый модуль распределения регистров, который категорически не дружит с младшими кортексами. В итоге код после перехода с 4.8 попросту раздувает процентов на 10. Для критических по размеру проектов пришлось зафиксировать версию компилятора. Причем спустя один мажор они еще и отключили возможность отказаться от нового аллокатора регистров.
И эти пункты в сумме спокойно дадут для GCC +-25%, так что сравнение прям скажем нерепрезентативное.