GCC, compare o efeito do uso de -O2 e de todos os sinalizadores de otimização ativados

Dedocumentação do gcc5.4, diz

-O2 ativa todos os sinalizadores de otimização especificados por -O. Também ativa os seguintes sinalizadores de otimização:

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

Parece que o uso de -O2 tem o mesmo efeito do uso de todos os 83 sinalizadores de otimização ativados por -O2 no gcc 5.4.0 no desempenho dos programas de teste.

No entanto, comparo o tempo de execução dos arquivos executáveis test1 e test2 obtidos por

gcc-5.4 -O2 test.c -o test1

e

gcc-5.4 -fauto-inc-dec -franches-count-reg -fcombine-stack-settings -fcompare-elim ... -fthread-jumps -falign-functions ... (todos os 83 sinalizadores) test.c -o test2

Testei em 20 programas c gerados aleatoriamente e executando cada caso de teste 100000 vezes para garantir que a medição do tempo de execução seja precisa o suficiente.Mas o resultado é que o uso de -O2 é aproximadamente 60% mais rápido do que o uso de todos os 83 sinalizadores.

Estou realmente confuso por que o efeito de usar -O2 não é equivalente a usar todos os sinalizadores de otimização que ele ativa.

Eu devo ter entendido algo errado, mas ainda não consegui encontrar nenhuma explicação. Eu apreciaria qualquer ajuda. Muito obrigado.

questionAnswers(2)

yourAnswerToTheQuestion