Проблема в том, что хоть векторизатор и может преобразовывать большое число случаев в SSE/AVX, он может легко не видеть кучу других случаев из-за общей сложности кода. Кроме того в коде могут присутствовать вычисления, векторную форму которой довольно проблемно выразить на Си так, чтобы компилятор все понял.
Эвристики, конечно, дорабатываться, но я сомневаюсь, что для сложного какого-нибудь алгоритма вроде H.264 простой Си с gcc10 может обойти асм с AVX и прочим.
Кроме того, код на Си скован стандартом. Так то компилятор мб мог ещё больше, но он ограничен as if rule. Самым проблемным пунктом стандарта является memory model. В Си и крестах модель памяти довольно мягкая и позволяет много оптимизаций, но все же могут существовать случаи, когда желаемый код просто невозможно написать. Впрочем, возможно векторные интринсики GNU C могли бы тут помочь. Но тут уже проблемы портабельности - нужен рантайм диспатч ибо как мы уяснили, собирать код на системе пользователя - так себе идея. Кстати, тут выигрывают ЯП с JIT, что Роман "Царь" справедливо заметил.