Pour être pédant, il y a 8 options -O valides différentes que vous pouvez donner à gcc, bien qu'il y en ait qui signifient la même chose.
La version originale de cette réponse indiquait qu'il y avait 7 options. Le CCG a depuis ajouté -Og
pour porter le total à 8.
A partir de la page de manuel :
-
-O
(Identique à -O1
)
-
-O0
(pas d'optimisation, valeur par défaut si aucun niveau d'optimisation n'est spécifié)
-
-O1
(optimiser au minimum)
-
-O2
(optimiser plus)
-
-O3
(optimiser encore plus)
-
-Ofast
(optimiser de manière très agressive au point d'enfreindre les normes de conformité)
-
-Og
(Optimiser l'expérience de débogage. -Og active les optimisations qui n'interfèrent pas avec le débogage. Il devrait s'agir de l'option niveau d'optimisation de choix pour le cycle standard édition-compilation-débogage, offrant un niveau raisonnable d'optimisation tout en maintenant une compilation et un débogage rapides. tout en maintenant une compilation rapide et une bonne expérience de débogage).
-
-Os
(Optimiser la taille. -Os
permet à tous les -O2
des optimisations qui n'augmentent généralement pas la taille du code. Il effectue également d'autres optimisations destinées à réduire la taille du code. -Os
désactive les options d'optimisation suivantes : -falign-functions -falign-jumps -falign-loops -falign-labels -freorder-blocks -freorder-blocks-and-partition -fprefetch-loop-arrays -ftree-vect-loop-version
)
Il peut également y avoir des optimisations spécifiques à la plateforme, comme le note @pauldoo, OS X a -Oz
.
13 votes
@minitech Quel est le FM que vous recherchez ? Même avec
man gcc
sur Cygwin (12000 lignes impaires), vous pouvez rechercher-O
et trouver tout ce que les réponses ci-dessous indiquent, et même plus.1 votes
@minmaxavg après avoir lu la source, je ne suis pas d'accord avec vous : tout ce qui est plus grand que
3
est identique à3
(tant qu'il n'est pasint
débordement). Voir aussi ma réponse .2 votes
En fait, GCC dispose de nombreux autres drapeaux pour affiner les optimisations.
-fomit-stack-pointer
modifiera le code généré.