Niveles de optimización

El grado en el que el compilador optimizará el código que genera está controlado por el distintivo -O.

Sin optimización
En ausencia de cualquier versión del distintivo -O, el compilador genera código sencillo sin reordenación de instrucciones u otro intento de mejora del rendimiento.
-O o -O2
Estos distintivos equivalentes hacen que el compilador se optimice sobre la base de suposiciones conservadoras sobre la reordenación de código. Solo se utilizan relajaciones explícitas como las directivas #pragma. Este nivel no realiza ninguna interconexión de interconexión de software, bucle de bucle o simple conmutación predictiva. También restringe la cantidad de memoria que el compilador puede utilizar.
-O3
Este distintivo indica al compilador que sea agresivo con respecto a las técnicas de optimización utilizadas y que utilice tanta memoria como sea necesario para la máxima optimización. Este nivel de optimización puede dar lugar a cambios funcionales en el programa si el programa es sensible a las excepciones de coma flotante, el signo de cero o los efectos de precisión de los cálculos de reordenación. Estos efectos secundarios se pueden evitar, a algún coste de rendimiento, utilizando la opción -qstrict en combinación con -O3. La opción -qhot, en combinación con -O3, permite la conmutación predictiva y algunos cambios. El resultado de estos cambios es que las rutinas grandes o complejas deben tener el mismo rendimiento o mejor rendimiento con la opción -O3 (posiblemente junto con -qstrict o -qhot) que tenían con la opción -O en versiones anteriores del compilador.
-O4
Este distintivo es equivalente a -O3 -qipa con la generación automática de arquitectura y la opción de ajuste ideal para esa plataforma.
-O5
Este distintivo es similar a -O4, excepto en este caso,-qipa = nivel = 2.