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).

questionAnswers(7)

yourAnswerToTheQuestion