¿Por qué GCC no optimiza las estructuras?

 C Programming >> Programación C >  >> Tags >> GCC
¿Por qué GCC no optimiza las estructuras?


Los sistemas exigen que ciertas primitivas se alineen con ciertos puntos dentro de la memoria (ints a bytes que son múltiplos de 4, shorts a bytes que son múltiplos de 2, etc.). Por supuesto, estos se pueden optimizar para desperdiciar el menor espacio en el relleno.


Mi pregunta es ¿por qué GCC no hace esto automáticamente? ¿Falta de alguna manera la heurística más obvia (variables de orden desde el requisito de tamaño más grande hasta el más pequeño)? ¿Algún código depende del ordenamiento físico de sus estructuras (es una buena idea)?


Solo pregunto porque GCC está súper optimizado de muchas maneras, pero no en esta, y creo que debe haber alguna explicación relativamente buena (que no tengo en cuenta).


Respuestas:


gcc no reordena los elementos de una estructura, porque eso violaría el estándar C. La sección 6.7.2.1 del estándar C99 establece: