Aus Hacker Neugier, ich frage mich, wie gcc
gelingt, die Funktion darunter intelligent zu optimieren?
$objdump -D c.o
unten ist für den Arm, aber x86 ist in der Logik nicht anders.
Ich frage mich meistens, ob dies das Ergebnis einer Kette von Optimierungen oder etwas wie eine Template-Übereinstimmung ist? Gibt es Dokumentation zu solchen Optimierungen?
Der Optimierer führt dies in Phasen / Durchläufen aus ... Wenn Sie -O2 angeben, sind viele Optimierungen aktiviert. Die wichtigsten Optimierungen, die hier zum Tragen kommen, sind
also dieser Code
%Vor%Nach dem Schleifenausrollen wird
%Vor%nach konstanter Propagierung pass
%Vor%nach der Eliminierung des Dead-Codes
%Vor%nach konstanter Faltung
%Vor%und schließlich
%Vor%Tags und Links optimization c gcc performance