Por que o GCC não otimiza as estruturas?
Sistemas exigem que certas primitivas sejam alinhadas a certos pontos dentro da memória (ints para bytes que são múltiplos de 4, curtos para bytes que são múltiplos de 2, etc.). Naturalmente, estes podem ser otimizados para desperdiçar o mínimo de espaço no preenchimento.
Minha pergunta é por que o GCC não faz isso automaticamente? A heurística mais óbvia (ordem variáveis do maior tamanho para menor) falta de alguma forma? Algum código depende da ordem física de suas estruturas (isso é uma boa ideia)?
Só estou perguntando porque o GCC está super otimizado de várias maneiras, mas não neste, e eu estou pensando que deve haver alguma explicação relativamente legal (para a qual eu sou indiferente).