mslomp
(usa Slackware)
Enviado em 12/07/2012 - 00:06h
as flags de otimização ativam vários métodos de otimização de código, desde as mais triviais, como remoção de código morto, eliminação (ou redução) de expressões em comum, propagação de constantes, otimizações de loop, como por exemplo o remanejo de código estático, otimizações de realocação de registradores, otimizações de assinatura única de variáveis, entre dezenas de outras formas - sendo que cada forma de otimização comporta várias otimizações. seria inviável listar e exemplificar todas por aqui.
as otimizações ocorrem em todos os estágios do processo da compilação (pré-processamento, tradução, códigos intermediário (ast/gimple), baixo nível (rtl/asm) e máquina, e finalmente a montagem). e mais, as otimizações utilizadas pelo compilador durante o processo dependerão do código a ser traduzido. portanto, é difícil responder sua pergunta e dizer quais otimizações ocorreram sem conhecer seu código. mas apenas para fins de observação, gere o código asm (flag -S) com e sem otimizações e analise as diferenças.
sugiro que leia um artigo que escrevi há alguns anos e que faz justamente essa análise rápida, porém utilizando o compilador VC6 da Microsoft - mas que pode ser tomado como referência para visualizar o que ocorre com o seu código de saída no GCC ou em qualquer outro compilador C moderno.
http://www.codeproject.com/Articles/4407/Compiler-s-Code-Optimization-The-Dark-Side
(em inglês - e inglês ruim eheh)
e uma consideração importante: nem sempre a otimização é benéfica. essa é, inclusive, a razão pela qual as otimizações devem ser ativadas manualmente. de outra forma, seria mais cômodo que todas as otimizações estivessem ativadas por default, a fim de sempre obter a saída o mais otimizada possível. mas cada caso é um caso. aplicações e/ou funções/trechos críticos nem sempre devem ser otimizadas. para esses casos, pode-se não ativar as flags O ou ainda especificar em código onde não devem ser aplicadas otimizações.
para saber as otimizações ativadas pelos diversos níveis do GCC, consulte essa página:
http://gcc.gnu.org/onlinedocs/gcc/Optimize-Options.html