> Где максимум gcc4.Так, что я там про некомпетентность говорил? Прости, тезка, но LAMERS MUST DIE.
- Самый винтажный GCC который я у себя нашел на эту тему был GCC 5.4 для avr'ок. Есть и более новые, они не моя основная платформа и я не парюсь особо.
- Самый винтажный GCC для ARM'ов в моих системах был 8. Но даже текущий релиз билдится для них влет.
Cortex-M и AVR по-моему достаточно микроконтроллерно уже, не? Но где же gcc4? В музее? :)
> Там да, '-Os' достаточно сильно отличается от '-O2'.
Да оно так то везде отличается. И хотя ты частично прав в том что оно в чем-то похоже, в целом разнца такова что -Os предпочитает более медленные но компактные варианты, а -O2 более быстрые даже если код жирнее. Запрос компактного размера заставляет оптимизер делать более компактный код даже если это будет заметно медленнее.
Как оно на конкретный алгоритм разложится - на самом деле очень отдельный вопрос. Особенно в паре с LTO каким-нибудь. Возможны варианты. В конечном итоге вон то - общая "усредненная" идея, но всегда возможны забавные частные случаи. Окончательный вердикт выносит бенч, и в энном случае совсем не обязано быть как написано. Но целом идея - вон та.
> Начиная с gcc5 сильно поменялась оптимизация по размеру.
Там еше LTO где-то в процессе появился, в 5 уже вроде был но довольно глючный. При правильном подходе может еще добрую четверть бинаря удалить вникуда, не теряя в скорости, что и делает его эпик вином.
> Есть `clang -Oz`, вот он пытается.
Я не пользуюсь шлангом, мне он не интересен, так что не в курсе про его приколы. GCC поддерживает больше платформ и мне это удобно.
> На себя посмотри.
Посмотрел, даже поделился наблюдениями насчет версий GCC. Доволен?