Вот когда БУДЕТ поддерживать, тогда и будем обсуждать. А пока С++20
для кортексов это только GCC. IAR это не только крутой компилятор.
Вроде смотришь листинги - ничего особенного, но работает код
быстрее. Я думаю, он учитывает особенности исполнения кода разными
ядрами (конвейеры, кэши, предвыборки и т.д.), иначе трудно
объяснить почему код выполняется быстрее. GCC делает код добротный,
агрессивно оптимизированный, но по какому-то клише, которое в целом
чуть медленнее. На разницу в скорости уже можно забить, но поддержка новых стандартов С++ в GCC балансирует с качеством инструментария вокруг него и в продакшене именно последнее перевешивает. Ибо IAR это ещё документация, стабильная работа с отладчиками/программаторами, отличный отладчик в IDE и качественная генерация ассемблерных листингов. С IAR я могу вообще без железа программировать на С++, просто подсматривая в листинг, осуществляя ту самую связь между С++ и асмом о которой говорил Мастер. На GCC это бестолковый objdump, который ничего толком не дизассемблирует или отладка в железе, но железка не всегда есть под рукой. Рабочий проект начиная от схемы и кончяя реализацией всего функционала с исправлением всех обнаруженных багов лично у меня проходит быстрее именно в IAR. Он, к тому же, более лоялен к программисту - не пытается наказать тебя неуместными оптимизациями. Например, если ты в GCC по указателю на неволатильную память сделаешь несколько записей, то он оптимизирует это до последней записи. Да, формально GCC прав, но в реальной жизни лучше рабочий код, чем правота компилятора при чикании кода оптимизатором. А вот то что IAR, вопреки стандарту С++, позволяет указатели использовать в constexpr контексте для меня скорее минус. Я в последнее время практикую сборку проектов разными компиляторами с проверкой работоспособности. Таким образом вылавливаются некоторые несоответствия стандарту и вольности/закидоны конкретных компиляторов. Вот тут ещё раз и обламывает отставание в реализации новых стандартов разными компиляторами. В первую очередь хочется, чтобы изделие выполнило свою миссию по гарантированному уничтожению "партнёров", пишуших компиляторы :)
ARM Compiler V6 это вообще особенная вещь. Я его боюсь. Он реально круче меня. Делает из кода такой винегрет. У него, похоже, самые крутые оптимизации по ARM-ядрам. Но я, возможно, из-за малого опыта работы с ним, не чувствую той связи между С++ кодом и получаемым ассемблером, о которой пишет Мастер. При работе с IAR и GCC через какое-то время появляется точное представление во что скомпилируется код и в листинги смотришь уже только для проверки самого себя. А вот листинги ARM Compiler всегда сопровождаются эмоцией "ни фига себе". Для пресловутого продакшена это скорее минус. Когда получаешь хард фолт по невыровненному доступу к памяти на ядрах с его поддержкой, это заставляет сильнее прочувствовать ту самую связь между С++ и асм.
Пардон за эмоции и субъективность, но что ещё на НГ делать...