2013-02-10 8 views
11

Betrachtet man die Disassembly eines C++ - Programms, sehe ich Funktionen wie _Z41__static_initialization_and_destruction_0ii.constprop.221. Was bedeutet die constprop in diesem Fall? Es scheint dem Aussehen des Suffix isra ähnlich zu sein (und wird manchmal kombiniert, beispielsweise .isra.124.constprop.226), aber es bedeutet etwas anderes.Was bedeutet das GCC-Funktionssuffix .constprop?

Antwort

3

Von Quellcode Kommentare habe ich gelesen - sie zeigen Funktionen, die während der Optimierung geklont wurden.

EDIT: Dies kann die Antwort sein, vielleicht nicht.

Einfache Konstantenpropagation

Diese Datei implementiert Konstantenpropagation und Verschmelzung. Es sucht nach Anweisungen, die nur konstante Operanden enthalten und ersetzt sie durch einen konstanten Wert anstelle eines Befehls. Zum Beispiel:

add i32 1, 2 

wird

i32 3 

HINWEIS: Dieser Pass hat eine Gewohnheit, Definitionen tot sein. Es ist eine gute Idee, einen DIE-Befehl (Dead Instruction Elimination) irgendwann nach dem Ausführen dieses Passes auszuführen.

SOURCE

+0

Wollen Sie wissen, was passieren Optimierung durchgeführt wird? – nneonneo

+0

Antwort aktualisiert ... – zaf

+0

Cool. Es sieht so aus, als ob es eine konstante Interprozedur-Fortpflanzung sein könnte, da es mehrere Versionen der Funktionen erzeugt. Obwohl das Dokument für LLVM ist, muss eine ähnliche Sache für GCC gelten. – nneonneo