Сравнение IAR Arm C 3.40 / 4.11 / 4.20 Откомпилировал один и тот же файл компилерами разных версий с одинаковыми настройками. Для оценки использовался файл os_core из состава ucos-ii.
Получил следующий результат объема кода в байтах:
/ 3.40a / 4.11a / 4.20a /
Arm mode
/ 3836  / 3836  / 3880  /
thumb mode
/ 2696  / 2432  / 2456  /
То есть фактически новые версии делают более пухлый код (за исключением 3.40->4.11 thumb mode).
А говорят, что улучшают кодогенерацию :)
Этот же тестовый проект использовал для оценки времени переключения контекста ucos-ii. Получил также незначительно ухудшение времени при использовании более новых версий:
/ 10.6 uS / 10.9 uS  / 11.0 uS /
То бишь, смысл в использовании новых версий - устраненные баги, не более того ?
Да, и все таки, что есть shared байты? Где их следы искать и что определяет их количество?