GCC, compare el efecto de usar -O2 y usar todos los indicadores de optimización que enciende

Dedocumentación de gcc5.4, dice

-O2 activa todos los indicadores de optimización especificados por -O. También activa los siguientes indicadores de optimización:

-fthread-jumps -falign-functions -falign-jumps -falign-loops -falign-labels -fcaller-save -fcrossjumping -fcse-follow-jumps, etc.

Parece que el uso de -O2 tiene el mismo efecto que el uso de todos los 83 indicadores de optimización activados por -O2 en gcc 5.4.0 en el rendimiento de los programas de prueba.

Sin embargo, comparo el tiempo de ejecución de los archivos ejecutables test1 y test2 obtenidos por

gcc-5.4 -O2 test.c -o test1

y

gcc-5.4 -fauto-inc-dec -fbranch-count-reg -fcombine-stack-settings -fcompare-elim ... -fthread-jumps -falign-functions ... (todas las 83 banderas) test.c -o prueba2

Probé en 20 programas c generados al azar y ejecuté cada caso de prueba 100000 veces para asegurarme de que la medición del tiempo de ejecución sea lo suficientemente precisa.Pero el resultado es que usar -O2 es en promedio un 60% más rápido que usar todas las 83 banderas.

Estoy realmente confundido por qué el efecto de usar -O2 no es equivalente a usar todos los indicadores de optimización que activa.

Debo haber entendido mal algo, pero no pude encontrar ninguna explicación todavía. Agradecería cualquier ayuda. Muchas gracias.

Respuestas a la pregunta(2)

Su respuesta a la pregunta