Eu diria que isso dificilmente depende do código que você está compilando.
Seja lá o que você escolher, será exibido como sinalizador do GCC, de acordo com página do GCC :
-O,-O1. Com-O, o compilador tenta reduzir o tamanho do código e o tempo de execução, sem realizar otimizações que exigem muito tempo de compilação.
-O2Otimize ainda mais. O GCC realiza quase todas as otimizações suportadas que não envolvem uma troca de velocidade espacial. Em comparação com -O, esta opção aumenta o tempo de compilação e o desempenho do código gerado.
-O3Otimize ainda mais.-O3ativa todas as otimizações especificadas por-O2e também ativa as opções-finline-functions,-funswitch-loops,-fpredictive-commoning,-fgcse-after-reload,-ftree-vectorizee-fipa-cp-clone.
Você pode executar
gcc -O<1-3> -Q --help=optimizers
para ver o conjunto de métodos de otimização ativados para cada nível de otimização.
Quanto mais agressivos eles são, maior o risco de o compilador estragar alguma coisa (não deveria acontecer, e eu não sei qual a probabilidade de algo acontecer, mas se você quer ficar do lado seguro, eu sugiro você segue a recomendação do apt-build não para usar -O3 / Strong ).