Warum optimiert GCC Strukturen nicht?

 C Programming >> C-Programmierung >  >> Tags >> GCC
Warum optimiert GCC Strukturen nicht?


Systeme verlangen, dass bestimmte Primitive auf bestimmte Punkte innerhalb des Speichers ausgerichtet werden (ints auf Bytes, die Vielfache von 4 sind, Shorts auf Bytes, die Vielfache von 2 sind usw.). Natürlich können diese optimiert werden, um möglichst wenig Platz beim Polstern zu verschwenden.


Meine Frage ist, warum GCC dies nicht automatisch tut? Fehlt die offensichtlichere Heuristik (Ordnen Sie Variablen von der größten zur kleinsten Größenanforderung) in irgendeiner Weise? Ist ein Teil des Codes von der physikalischen Reihenfolge seiner Strukturen abhängig (ist das eine gute Idee)?


Ich frage nur, weil GCC in vielerlei Hinsicht superoptimiert ist, aber nicht in dieser, und ich denke, es muss eine relativ coole Erklärung geben (die ich nicht kenne).


Antworten:


gcc ordnet die Elemente einer Struktur nicht neu, da dies gegen den C-Standard verstoßen würde. Abschnitt 6.7.2.1 des C99-Standards besagt: