Wie deaktiviere ich die Rückrufoptimierung in gcc?

8

Ich frage mich, ob jemand das Flag für gcc kennt, um die Optimierung von Heckrufen zu deaktivieren. Im Grunde wird in einer Rückfalloptimierung gcc einen Stapelrahmen ersetzen, wenn der Rückgabewert von einer aufgerufenen Funktion übergeben wird (per Rückgabe) oder nichts anderes in der Funktion passiert.

Das heißt, in

%Vor%

Wenn foo den Balken aufruft, gibt gcc Code aus, der den Stapelrahmen für foo ersetzt, anstatt einen neuen Stapelrahmen hinzuzufügen.

Meine Firma verfügt über einen Stapelabwickler, der eine Stapelverfolgung von jedem Punkt im Code aus drucken kann. Durch die Optimierung von "tailcall" werden Stack-Frames verschwinden, was die Stack-Trace etwas verwirren kann.

Ich kompiliere für x86-64 mit gcc4.3.

Vielen Dank im Voraus! P

    
pgod 09.09.2010, 18:26
quelle

2 Antworten

25

GCC-Handbuch:

%Vor%

Also kompilieren Sie entweder mit -O0 / -O1 oder verwenden Sie -fno-optimize-sibling-calls .

    
liori 09.09.2010, 18:33
quelle
10

Nicht getestet: -fno-optimize-sibling-calls

Ссылка

    
pmg 09.09.2010 18:35
quelle

Tags und Links