Ich habe diese verwandte Frage gefunden.
Um es zusammenzufassen und sich über Compiler-Optimierungsdurchläufe zu informieren:
llvm-as < /dev/null | opt -O3 -disable-output -debug-pass=Arguments
Wie in Geoff Nixons Antwort (+1) ausgeführt, werden clang
zusätzlich einige Optimierungen auf höherer Ebene ausgeführt, die wir abrufen können mit:
echo 'int;' | clang -xc -O3 - -o /dev/null -\#\#\#
Die Dokumentation der einzelnen Ausweise finden Sie hier .
Mit Version 6.0 lauten die Pässe wie folgt:
Mit Version 3.8 lauten die Pässe wie folgt:
In Version 3.7 lauten die Durchläufe wie folgt (analysierte Ausgabe des obigen Befehls):
Für Version 3.6 sind die Ausweise wie im Beitrag von GYUNGMIN KIM dokumentiert.
In Version 3.5 lauten die Durchläufe wie folgt (analysierte Ausgabe des obigen Befehls):
In Version 3.4 lauten die Durchläufe wie folgt (analysierte Ausgabe des obigen Befehls):
In Version 3.2 lauten die Durchläufe wie folgt (analysierte Ausgabe des obigen Befehls):
-O0: -targetlibinfo -preverify -domtree -verify
-O1 basiert auf -O0
- fügt hinzu : -sroa -early-cse -lower-erwarten -no-aa -tbaa -basicaa -globalopt -ipsccp -deadargelim -instcombine -simplifycfg -basiccg -prune-eh -imways-inline -functionattrs -simplify-libcalls -lazy-value -info -jump-threading -correlated-propagation -tailcallelim -reassociate -loops -loop-simplify -lcssa -loop-rotate -licm -loop-unswitch -scalar-evolution -indvars -loop-idiom -loop-deletion -loop-unroll -memdep -memcpyopt -sccp -dse -adce -strip-dead-Prototypen
-O2 basiert auf -01
- fügt hinzu : -inline -globaldce -constmerge
- entfernt : -imways-inline
-O3 basiert auf -O2
- fügt hinzu : -argpromotion
-Os ist identisch mit -O2
-Oz ist identisch mit -Os
Bearbeiten [März 2014] entfernte Duplikate aus Listen.
Bearbeiten [April 2014] Dokumentationslink + Optionen für 3.4 hinzugefügt
Bearbeiten [September 2014] Optionen für 3.5 hinzugefügt
Edit [Dezember 2015] fügte Optionen für 3.7 hinzu und erwähnte die vorhandene Antwort für 3.6
Bearbeiten [Mai 2016] fügte Optionen für 3.8 für opt und clang hinzu und erwähnte die vorhandene Antwort für clang (versus opt)
Bearbeiten [November 2018] Optionen für 6.0 hinzufügen