GCC disables lots of builtins при работе в строгом режиме -std=c...
.Почему GCC не использует встроенные функции в строгом режиме?
Вне строгий режим ISO C (-ansi, -std = C90, C99 = -std или -std = с11), то функции _exit, ALLOCA, bcmp, bzero ... stpcpy, ... может обрабатываются как встроенных функций. Все эти функции имеют соответствующие версии с префиксом _ builtin, которые могут использоваться даже в строгом режиме C90.
Есть ли причина для этого? Являются ли построины несоответствующими? Или это потому, что в стандарте говорится, что когда вы вызываете memcpy
, он действительно должен его называть и что я не могу оптимизироваться?
Я чувствую, что мой код мог бы определенно работать быстрее, если я перекомпилировать его с помощью -std=gnu*
, поскольку это позволило бы еще немного optimizations
GCC обычно генерирует специальный код для обработки некоторых встроенных функций более эффективно; например, вызовы ALLOCA могут стать одиночных инструкциями, которые регулируют стек напрямую, и призывает к тетсру может стать рядной копией петли
ouch, вы правы. Я думаю, что я быстро прочитал документ и перепутал списки функций. но ваше объяснение стоит в любом случае. Благодарю. –