GCC deaktiviert eine Vielzahl von Builtins wenn sie im strengen Modus laufen -std=c...
.
Außerhalb des strengen ISO-C-Modus (-ansi, -std=c90, -std=c99 oder -std=c11) sind die Funktionen _exit, alloca, bcmp, bzero ... stpcpy, ... als integrierte Funktionen behandelt werden. eingebaute Funktionen behandelt werden. Alle diese Funktionen haben entsprechende Versionen mit dem Präfix _ eingebautes die auch im strengen C90-Modus verwendet werden kann.
Gibt es dafür einen Grund? Sind die Buildins nicht konform? Oder liegt das daran, dass der Standard besagt, dass beim Aufruf von memcpy
sollte es eigentlich heißen, dass ich nicht optimiert werden kann?
Ich fühle mich wie mein Code könnte dann definitiv schneller laufen, wenn ich es neu kompiliert mit -std=gnu*
weil es einige mehr ermöglichen würde Optimierungen
GCC erzeugt normalerweise speziellen Code, um bestimmte eingebaute Funktionen effizienter zu handhaben; zum Beispiel können Aufrufe von alloca zu einzelne Anweisungen werden, die den Stack direkt anpassen, und Aufrufe von memcpy können zu Inline-Kopierschleifen werden